gevent-协程支持

安装

真是费了牛劲了,一下午才搞定安装,记录如下

  1. 安装libevent brew install libevent
  2. 安装cython pip install cython
  3. 安装greenlet
    此时有可能出现error: could not create '/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/greenlet': Operation not permitted
    直接略过,进入第4步
  4. 安装gevent
  • git clone https://github.com/gevent/gevent/
  • sudo python setup.py build
  • sudo python setup.py install

用法

Python通过yield提供了对协程的支持,Python-协程,第三方的gevent为Python提供了比较完善的协程支持
通过greenlet实现协程,当一个greenlet遇到IO操作的时候,比如访问网络,就自动切换到其他的greenlet,等待IO操作完成,再在适当的时候切换回来继续执行,IO操作比较费时,程序处于等待状态,gevent可以自动切换协程,总保证greenlet在运行,而不是等待IO。
切换是在IO操作时候自动完成,所以gevent需要修改Python自带的标准库,这一过程再启动时通过monkey patch完成

  1. gevent.monkey – Make the standard library cooperative

  2. patch_socket(dns=True, aggressive=True)
    Replace the standard socket object with gevent’s cooperative sockets.
    If dns is true, also patch dns functions in socket.

  3. patch_ssl()
    Replace SSLSocket object and socket wrapping functions in ssl with cooperative versions.
    This is only useful if patch_socket() has been called.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 一、开启线程的两种方式 在python中开启线程要导入threading,它与开启进程所需要导入的模块mul...
    CaiGuangyin阅读 2,431评论 1 16
  • 前述 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在pyt...
    softlns阅读 6,348评论 2 24
  • OSX安装gevent her0kings1ey 最近在OSX下尝试安装运行gevent的examples中间遇到...
    her0kings1ey阅读 3,841评论 0 0
  • 协程,又称微线程,纤程,协程是一种用户态的轻量级线程 协程是单线程 协程的好处: 1 没有上下文切换 ...
    钱塘阅读 266评论 0 2
  • 最近在看《UNIX网络编程 卷1》和《FREEBSD操作系统设计与实现》这两本书,我重点关注了TCP协议相关的内容...
    腩啵兔子阅读 1,188评论 0 7