1

我有一个看起来像这样的 Python 脚本:

for x in range(1000,40000):
    try:
       some_function(x)
       some_other_function(x)
    except Exception, e:
       print e
       pass

我知道这不是处理此类错误的好习惯,但这是一个我只会使用一次的脚本。无论如何,我注意到循环有时会卡在一个特定的 id (x) 上并冻结几个小时。

所以我的问题是:我将如何在循环中实现超时功能,以便如果它需要超过 20 秒然后跳到下一个?

4

1 回答 1

1

您可以将其定义为 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-tutorial/python-timeout-a-function/

由于您使用的是 Windows,因此您可能想查看这个较旧的线程 python: windows 等价于 SIGALRM

于 2012-07-12T16:25:00.813 回答