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()从不产生结果,所以第二个任务永远没有机会抛出错误。