如何在Python中实现真正的超时?代码如下: http://eventlet.net/doc/modules/timeout.html。
超时永远不会到达。我错在哪里了吗?
P.s. 我替换了:
我只是添加了0秒的延迟:
#!/usr/bin/python
import eventlet
import time
import sys
import random
while True:
try:
with eventlet.timeout.Timeout(1, False):
print 'limited by timeout execution'
while True:
print '\r' + str(random.random()),
sys.stdout.flush()
eventlet.sleep(0)
print ' Never printed Secret! '
except Exception as e:
print ' Exception: ', e
finally:
print ''
print ' Timeout reached '
print ''
超时永远不会到达。我错在哪里了吗?
P.s. 我替换了:
time.sleep(0.1)
使用:
eventlet.sleep(0)
将 False 添加到异常中,现在它可以正常工作:
with eventlet.timeout.Timeout(1):
change to:
with eventlet.timeout.Timeout(1, False):
但是它只能与eventlet.sleep(0.1)一起使用。
例如,以下代码是错误的:
#!/usr/bin/python
import eventlet
import time
start_time = time.time()
data = 0
with eventlet.timeout.Timeout(1, False):
while True:
data +=1
print 'Catch data ', data, ' in ', time.time() - start_time
我只是添加了0秒的延迟:
我只是添加了0秒的延迟:
eventlet.sleep(0)
它的工作效果非常好。
已解决
with eventlet.timeout.Timeout(1):
改为了with eventlet.timeout.Timeout(1, False):
,崩溃问题得到了解决。 - stackterminator