2015-08-20 45 views

回答

0

time.sleep()實際上會暫停代碼的所有執行,並且不允許任何其他代碼運行。 Gevent是一個事件循環,這意味着它允許其他「線程」(greenlet)在阻塞時運行。

基本上gevent有一個正在執行的任務列表。它只允許一次運行一個任務。如果你說time.sleep(1),那個任務仍在運行,但沒有做任何事情。如果您說gevent.sleep(1),它會暫停當前任務並允許其他任務運行。

gevent.Timeout()實際上啓動了第二個任務來監視已經過去的時間量。由於time.sleep()永遠不會產生,第二個任務永遠不會有機會拋出錯誤。

相關問題