Eval()冻结大指数

时间:2013-11-11 23:41:24

标签: python time eval freeze exponentiation

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

1 个答案:

答案 0 :(得分: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的介绍部分。文档并略过其余部分。 (事实上​​,无论如何都这样做。)