我有一个Python脚本,看起来像这样:
for x in range(1000,40000):
try:
some_function(x)
some_other_function(x)
except Exception, e:
print e
pass
我知道这不是处理这样错误的好方法,但这是一个我只会使用一次的脚本。无论如何,我注意到循环有时会卡在一个特定的id(x)上,并冻结几个小时。
所以我的问题是:我该如何在循环中实现超时函数,这样如果它花费了20秒以上,就可以跳到下一个了?
您可以将其定义为TimeoutException
except TimeoutException, e:
print e
pass
如果你想让它只运行20秒,我建议你在python中查找创建信号处理程序。这里有一个例子和它的python文档链接。https://docs.python.org/library/signal.html
https://web.archive.org/web/20130511171949/http://pguides.net/python-教程/python-timeout-a-function/
由于您使用的是Windows,您可能需要查看此较旧的线程python:相当于SIGALRM 的windows