2012-03-22 73 views

回答

1

找到this基於線程的解決方案,但如註釋here,通常無法殺死Python中的線程,所以即使在線程「超時」之後它仍繼續運行。但是,假設它不在C-land中,可以使用this實際終止線程。

不幸的是,它不是現成的食譜,但它看起來像它有你需要的所有部分。

-1

我不明白爲什麼Timeout裝飾器不能在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') 
+0

如果您檢查['signal'](http://docs.python.org/library/signal.html)模塊的文檔,您會看到'signal.alarm()'(由超時裝飾器使用)被列爲純UNIX。 – kindall 2012-03-22 23:44:11