协程之gevent模块

用gecent模块实现函数之间的切换

from gevent import monkey
monkey.patch_all()     # 相当于把下面的模块打包,让gevent模块可以识别一下模块的IO操作
import time
import gevent
from threading import currentThread


def eat():
    print('eat :', currentThread())   # 可以看到协程的信息
    print('eat1')
    time.sleep(1)    # 也有IO操作,但是没有进行切换
    # gevent.sleep(1)    # 也有IO操作,但是没有进行切换
    print('eat2')


def sleep():
    print('sleep :', currentThread())
    print('sleep1')
    time.sleep(1)
    # gevent.sleep(1)
    print('sleep2')


g1 = gevent.spawn(eat)
g2 = gevent.spawn(sleep)
g1.join()    # 检测到主程序有了IO操作就切换
g2.join()    # 检测到主程序有了IO操作就切换
# gevent.joinall([g1, g2])  # 相当于g1.join(),g2.join()

 

posted @ 2019-01-31 15:53  平平无奇小辣鸡  阅读(131)  评论(0)    收藏  举报