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不能直接識別必須加入monkeyide
要用gevent,須要將from gevent import monkey;monkey.patch_all()放到文件的開頭異步編程