Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。
下载:pip3 install gevent
使用:from gevent import spawn
from gevent import monkey;monkey.patch_all() #把下面涉及到io行为的都打上一个标记,gevent识别这些io行为。 from gevent import spawn,joinall import time def play(name): print("%s play 1"%name) time.sleep(3) print("%s play 2"%name) def eat(name): print('%s eat 1'%name) time.sleep(5) print('%s eat 2'%name) g1=spawn(play,'刘庆祝') g2=spawn(eat,'刘庆祝') start=time.time() g1.join() g2.join() #简写joinall([g1,g2]) print("住",time.time()-start) 结果: 刘庆祝 play 1 刘庆祝 eat 1 刘庆祝 play 2 刘庆祝 eat 2 住 5.001077890396118 #spawn实例化一个对象,也在异步提交任务
time.sleep(2)模拟的是gevent可以识别的io阻塞,但是time.sleep不能直接识别必须加入monkey
要用gevent,需要将from gevent import monkey;monkey.patch_all()放到文件的开头