1
爲什麼eventlet允許它完成6秒,當它應該在5秒後退出縮進?Eventlet超時不退出
>>> with eventlet.Timeout(5):
time.sleep(6)
x = 1
>>> x
1
爲什麼eventlet允許它完成6秒,當它應該在5秒後退出縮進?Eventlet超時不退出
>>> with eventlet.Timeout(5):
time.sleep(6)
x = 1
>>> x
1
Eventlet提供協作式多線程。這意味着你需要控制權給中樞或協同程序(在這種情況下,中心實現超時)運行的機會。爲了得到控制:
eventlet.monkey_patch()
,現在你可以使用普通time
,socket
等模塊,通過「綠色」版本,與Eventlet合作所取代。任何沒有綠色調用的CPU密碼,例如[_ for _ in xrange(1000000000)]
根本無法中斷。如果發現自己處於類似情況,則將eventlet.sleep(0)
置於循環的某個位置,這將進入Eventlet集線器並允許超時工作。
我敢肯定你應該使用'eventlet.sleep',如果你想要一個eventlet greenthread睡覺。 – user2357112
@ user2357112這是什麼東西特別睡覺,或者如果我使用其他調用,它也不會退出中途通過? – User