Pythonでタイムアウトを本当に実装するには? http://eventlet.net/doc/modules/timeout.html
コードは次のようになります。
#!/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 ''
タイムアウトになることはありません。どこが間違っていますか?
私が置き換えた追伸:
time.sleep(0.1)
と:
eventlet.sleep(0)
例外に False を追加すると、うまく機能するようになりました。
with eventlet.timeout.Timeout(1):
への変更:
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
sleep 0 秒を追加するだけです。
eventlet.sleep(0)
そして、それは魅力のように機能します。
解決済み