2010-02-18 46 views
1

我有一些doA()方法偶爾掛起一段時間。 Python中是否有通用模塊可以控制doA()執行的時間並中斷它? 當然,它可以通過線程來實現,所以繞線模塊的簡單包裝可能是很好的解決方案。在Python中的任意時間執行中斷方法

換句話說,我想有這樣的代碼:

import CoolAsyncControl 
CoolAsyncControl.call(self.doA, timeout = 10) 

回答

6

可以使用threading.Timer調用thread.interrupt_main,只要你在主線程中運行doA。請注意,您所期望的語法是不可能的,因爲Python(像大多數語言,除了Haskell之外)是「渴望的」 - 參數在執行調用之前完全計算,所以self.doA()將運行至完成之前call方法有任何有機會做任何事情!你將不得不使用一些語法如

CoolIt.call(self.doA, args=(), timeout=100) 

使call可以之前設置計時開始執行調用doA與給定的參數。

+0

謝謝!這正是我要找的。當然,我的意思是self.doA在我的代碼中 – shuvalov 2010-02-18 18:39:28