我希望有一种简单的方法来测试特定方法是否在分配的时间内返回。
Timeout decorator看起来是最方便的方式,但不幸的是它无法在Windows上运行。
答案 0 :(得分:1)
找到this基于线程的解决方案,但正如所提到的here,通常没有办法杀死Python中的线程,因此即使在线程“超时”之后它仍继续运行。但是,你可以使用this来实际终止线程,假设它没有被捆绑在C-land中。
不幸的是,这不是一个现成的食谱,但看起来它有你需要的所有部分。
答案 1 :(得分:-1)
我不明白为什么Timeout Decorator不能在windows上运行?
如果这是永久性的,而不仅仅是出于调试目的,您可以在方法中使用for else循环。
def methodName(timeout):
for i in range(timout):
if done_doing_task:
break
else: #will only be executed if we don't break out of the for loop
raise Exception('method methodName timed out')