我有一些方法doA()偶尔挂起一段时间。 Python中是否有可以控制doA()执行时间并中断它的常用模块? 当然,它可以通过线程实现,因此简单的线程模块封装可能是很好的解决方案。
换句话说,我想要代码如下:
import CoolAsyncControl
CoolAsyncControl.call(self.doA, timeout = 10)
答案 0 :(得分:6)
只要您在主线程中运行doA
,就可以使用threading.Timer来呼叫thread.interrupt_main。请注意,您想要的语法是不可能的,因为Python(像大多数语言一样,除了例如Haskell)是“渴望” - 参数在执行调用之前完全计算,因此self.doA()
将在完成之前运行完成 call
方法有机会对此做任何事情!您必须使用某些语法,例如
CoolIt.call(self.doA, args=(), timeout=100)
这样call
可以在使用给定参数执行对doA
的调用之前将计时器设置为。