我一直在做一个基因程序,我遇到了一个问题。似乎它会尝试计算大指数但在此过程中冻结(这是可以理解的,因为它是一个很大的数字)。有什么方法可以计时执行吗?这样我就可以在它冻结几分钟之前停止计算。谢谢您的帮助!
问问题
206 次
1 回答
0
一般来说,你并不真的想做你所要求的。(事实上,那里有不止一个危险信号。)但如果你这样做:
你可以让某些东西运行的唯一方法,同时也是时间,是将它放在一个单独的线程或进程中。
如果你想能够强行打断那个东西,它必须是一个过程。
因此,例如:
import multiprocessing
def try_slow_thing(function, args, timeout):
p = multiprocessing.Process(target=function, args=args)
p.start()
p.join(timeout)
if p.is_alive():
p.terminate()
raise TimeoutError("stupid process wouldn't finish")
如果你想从函数返回一个值,或者从主进程共享值,或者任何比“运行并完成或不”更花哨的东西,请阅读multiprocessing
文档的介绍部分并略读其余部分。(事实上,无论如何都要这样做。)
于 2013-11-11T23:48:07.053 回答