協程多少個確認後要.join()
才能出結果併發
#看不出任何效果的協程 import gevent def eat(): print('開始吃飯好吧') def play(): print('開始聽歌') g1 = gevent.spawn(eat) g2 = gevent.spawn(play) g1.join() #必須執行join()告訴他就這兩個協程,其餘不加入了 g2.join() #結果 開始吃飯好吧 開始聽歌好吧
協程默認是不能識別系統的I/O操做的,默認只能識別gevent.sleep()
spa
import time import gevent def eat(): print('開始吃飯好吧') time.sleep(1) print('吃飯結束‘) def play(): print('開始聽歌') time.sleep(1) print('聽歌結束') g1 = gevent.spawn(eat) g2 = gevent.spawn(play) g1.join() #必須執行join()告訴他就這兩個協程,其餘不加入了 g2.join() #結果 開始吃飯好吧 吃飯結束 開始聽歌好吧 聽歌結束
須要在全部的模塊以前加入from gevent import monket;monkey.pach_all()
才能識別系統的I/O操做線程
from gevent import monkey;monket.path_all() import time import gevent def eat(): print('開始吃飯好吧') time.sleep(1) print('吃飯結束‘) def play(): print('開始聽歌') time.sleep(1) print('聽歌結束') g1 = gevent.spawn(eat) g2 = gevent.spawn(play) g1.join() #必須執行join()告訴他就這兩個協程,其餘不加入了 g2.join() #結果 開始吃飯好吧 開始聽歌好吧 #基本上是同時打印 聽歌結束 #一秒後基本上又是同時打印 吃飯結束
.value()
可以獲取一個協程的返回值code