在Python中任意时间后执行中断方法

时间:2010-02-18 18:28:48

标签: python asynchronous multithreading

我有一些方法doA()偶尔挂起一段时间。 Python中是否有可以控制doA()执行时间并中断它的常用模块? 当然,它可以通过线程实现,因此简单的线程模块封装可能是很好的解决方案。

换句话说,我想要代码如下:

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

1 个答案:

答案 0 :(得分:6)

只要您在主线程中运行doA,就可以使用threading.Timer来呼叫thread.interrupt_main。请注意,您想要的语法是不可能的,因为Python(像大多数语言一样,除了例如Haskell)是“渴望” - 参数在执行调用之前完全计算,因此self.doA()将在完成之前运行完成 call方法有机会对此做任何事情!您必须使用某些语法,例如

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

这样call可以在使用给定参数执行对doA的调用之前将计时器设置为