为什么是Gevent。超时() 无法引发异常



with getevent . timeout (0.1) as tt:

time.sleep(1)

,不抛出异常

使用getevent . timeout(0.1)作为tt:

gevent.sleep(1)

throw event.timeout. timeout: 0.1秒

区别在于time.sleep()和event.sleep()!

time.sleep()实际上暂停所有代码的执行,并且不允许任何其他代码运行。Gevent是一个事件循环,这意味着它允许其他"线程"(greenlet)在阻塞时运行。

实际上gevent有一个正在执行的任务列表。它一次只允许运行一个任务。如果输入time.sleep(1),则该任务仍在运行,但不做任何事情。如果输入event.sleep(1),它将暂停当前任务,并允许其他任务运行。

getevent . timeout()实际上会启动第二个任务来监视已经过的时间。由于time.sleep()从不产生结果,所以第二个任务永远没有机会抛出错误。

相关内容

  • 没有找到相关文章

最新更新