我有一些方法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/

10-13 09:18