0

我一直在做一个基因程序,我遇到了一个问题。似乎它会尝试计算大指数但在此过程中冻结(这是可以理解的,因为它是一个很大的数字)。有什么方法可以计时执行吗?这样我就可以在它冻结几分钟之前停止计算。谢谢您的帮助!

4

1 回答 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 回答