0
與gevent.Timeout(0.1)爲TT:爲什麼gevent.Timeout()不能提高異常
time.sleep(1)
以上,不會引起異常
與gevent.Timeout(0.1)爲TT:
gevent.sleep(1)
拋gevent.timeout.Timeout:0.1秒
有差別time.sleep()和gevent.sleep()!
與gevent.Timeout(0.1)爲TT:爲什麼gevent.Timeout()不能提高異常
time.sleep(1)
以上,不會引起異常
與gevent.Timeout(0.1)爲TT:
gevent.sleep(1)
拋gevent.timeout.Timeout:0.1秒
有差別time.sleep()和gevent.sleep()!
time.sleep()實際上會暫停代碼的所有執行,並且不允許任何其他代碼運行。 Gevent是一個事件循環,這意味着它允許其他「線程」(greenlet)在阻塞時運行。
基本上gevent有一個正在執行的任務列表。它只允許一次運行一個任務。如果你說time.sleep(1),那個任務仍在運行,但沒有做任何事情。如果您說gevent.sleep(1),它會暫停當前任務並允許其他任務運行。
gevent.Timeout()實際上啓動了第二個任務來監視已經過去的時間量。由於time.sleep()永遠不會產生,第二個任務永遠不會有機會拋出錯誤。