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
  • 相关阅读:
    VC得到当前目录与得到应用程序目录的一个应用
    VC回车键的使用
    VC保存和显示数据库图像(BMP)
    windows2003 oracle817过防火墙方法
    美化VC界面(用户登录界面)
    系统要关闭,可我程序还有事要处理?
    VC保存和显示数据库图像(JPG、JPEG)
    VC应用程序快捷方式带参数
    O(n)回文子串算法
    [转]经典字符串哈希算法
  • 原文地址:https://www.cnblogs.com/luoye00/p/5352718.html
Copyright © 2011-2022 走看看