我有一些方法doA()偶尔会挂起一阵子。 Python中是否有任何通用模块可以控制doA()执行时间并中断执行?
当然,它可以通过线程来实现,因此在线程模块周围进行简单的包装可能是一个很好的解决方案。
换句话说,我想有这样的代码:
import CoolAsyncControl
CoolAsyncControl.call(self.doA, timeout = 10)
最佳答案
只要您在主线程中运行doA
,就可以使用threading.Timer调用thread.interrupt_main。请注意,所需的语法是不可能的,因为Python(像大多数其他语言一样,例如Haskell除外)是“急切的”-参数是在执行调用之前完全计算出来的,因此self.doA()
将在之前完成,而call
方法具有任何先决条件有机会做任何事情!您必须使用一些语法,例如CoolIt.call(self.doA, args=(), timeout=100)
这样call
可以将计时器设置为,然后使用给定的参数执行对doA
的调用。
关于python - 在Python中任意时间后执行中断方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2291129/