我想要一种简单的方法来测试特定方法是否在分配的时间内返回。
超时装饰器看起来是最方便的方法,但不幸的是,它在Windows上不起作用。
找到了这个基于线程的解决方案,但正如这里所指出的,在Python中通常没有办法杀死线程,所以即使在线程"超时"后,它也会继续运行。然而,您可以使用它来实际终止线程,假设它没有被束缚在C-land中。
不幸的是,这不是一个现成的食谱,但看起来它有你需要的所有部分。
我不明白为什么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')