zoukankan      html  css  js  c++  java
  • Gevent协程

    协程

    协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程

    协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此:

    协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所处逻辑流的位置。

    Gevent

    Gevent是基于协程的Python网络库

    特性:

    1. 基于libev的快速事件循环
    2. 基于greenlet的轻量级执行单元
    3. 重用Python标准库且概念相似的API
    4. 支持SSL的协作socket
    5. 通过c-ares或者线程池进行DNS查询
    6. 使用标准库和第三方库中使用了阻塞socket的代码的能力

     实例代码1

    import gevent
    def foo():
        print('33[32;1mrunning in foo33[0m')
        gevent.sleep(1)
        print('33[32;1mExplicit context switch to foo again')
    def bar():
        print('33[31;1mExpicit context to bar33[0m')
        gevent.sleep(1)
        print('33[31;1mExplicigt context switch back to  bar33[0m')
    def ex():
        print('33[33;1mExpicit context to bar33[0m')
        gevent.sleep(1)
        print('33[33;1mExplicigt context switch back to  bar33[0m')
    
    
    gevent.joinall([
        gevent.spawn(foo),
        gevent.spawn(bar),
        gevent.spawn(ex),
    ])

    执行结果:

    running in foo
    Expicit context to bar
    Expicit context to bar
    Explicit context switch to foo again
    Explicigt context switch back to  bar
    Explicigt context switch back to  bar
  • 相关阅读:
    lbs(查看附近的人),看看社交软件如何实现查看附近的人
    PHP框架中的日志系统
    PHP链式操作输出excel(csv)
    看看你的正则行不行——正则优化一般的json字符串
    PHP设计模式(三)
    PHP设计模式(二)
    PHP设计模式(一)
    PHP守护进程
    数据库的常用日志
    浅谈数据库事物
  • 原文地址:https://www.cnblogs.com/luoye00/p/5352718.html
Copyright © 2011-2022 走看看