我想创建一个计时器,以便特定的代码行只有60秒的时间来处理。
def foo():
for i in xrange(10):
output = action(arg1, arg2)
print i
如果此操作超过60秒,则不要打印i,但只需继续下一个。我怎么能这样做?
动作不是循环,所以计时器不起作用。我也试过信号,但这也行不通,因为我有这些嵌套的内部循环,我得到一个错误说:ValueError:signal只能在主线程中运行// Werkzeug Debugger。
这是我迄今为止尝试过的信号以及我得到的错误:
fileName.py
class TimeoutException(Exception):
pass
def timeout_handler(signum, frame):
raise TimeoutException
signal.signal(signal.SIGALRM, timeout_handler)
def foo():
signal.alarm(60)
try:
output = foo2(arg1, arg2)
except TimeoutException:
continue
else:
# Reset the alarm
signal.alarm(0)
我这样做,而不是提出应该通过的异常,然后最终继续我的操作,我得到了这个并且脚本终止。
timeout_handler中的第X行
引发TimeoutException
fileName.TimeoutException
答案 0 :(得分:0)
import time
for i in xrange(10):
time_start = time.time()
output = action(arg1, arg2)
if time.time() - time_start <= 60:
print i