擅长:python、mysql、java
<p>我不赞成最明显的答案-使用信号报警()以及异步引发异常以跳出任务执行的警报信号处理程序。理论上,它应该工作得很好,但实际上cPython解释器代码不能保证处理程序在您想要的时间范围内执行。信号处理可能会延迟x个字节码指令,因此在显式取消警报后(在try块的上下文之外)仍可能引发异常。在</p>
<p>我们经常遇到的一个问题是,在可超时代码完成后,</em>会引发报警处理程序的异常。在</p>
<p>由于没有太多可用的线程控制方式,我一直依赖进程控制来处理必须超时的任务。基本上,要点是将任务交给子进程,如果任务花费太长时间,则终止子进程。<a href="http://docs.python.org/2/library/multiprocessing.html#module-multiprocessing.pool" rel="nofollow">multiprocessing.pool</a>不是很复杂,所以我有一个用于该级别控制的home-rolled池。在</p>