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
  • 相关阅读:
    jquery堆栈与队列
    类数组转成数组对象
    python基础教程总结8——特殊方法,属性,迭代器,生成器,八皇后问题
    python基础教程总结7——异常
    python基础教程总结6——类
    python基础教程总结5——函数
    python基础教程总结4—基本语句
    python——动态类型
    python基础教程总结3—字典
    python基础教程总结2——字符串
  • 原文地址:https://www.cnblogs.com/luoye00/p/5352718.html
Copyright © 2011-2022 走看看