【发布时间】:2012-01-08 02:32:56
【问题描述】:
我想实现,当函数需要超过 90 秒才能完成时,它应该在超时时立即返回。有什么方法可以实现吗?
def abc(string):
import re
if re.match('some_pattern', string):
return True
else:
return False
abc('some string to match')
已编辑
请下载this测试文件。如果发生超时错误,我创建了一个线程类并在线程内引发异常。但是线程仍然存在,因为即使在异常之后它也会打印i am still alive :)。为什么异常不会强制线程停止?
【问题讨论】:
-
这类问题通常会得到涉及线程的答案,
signal.alarm()、signal.setitmer()等。小心这些答案——它们可能依赖于抛出的 Python 异常,但我怀疑 Python 异常可以中断re.match()。 (不确定正确答案。也许使用子进程,并在 90 秒后将其终止。) -
@aix:虽然链接的问题非常相似,但没有一个答案在这里真正适用。只有检查过的答案才会起作用,但它会使停滞的功能在后台运行并消耗 CPU 时间。这就是我不投票关闭的原因。
标签: python