如何处理异常退出错误,例如,在功能异常退出之前执行该功能



例如,在长时间重复的蒙特卡罗运行期间,我想在程序正常退出之前终止程序(就像 10000MC 运行一样,我想在 5000 次运行完成时终止。但我仍然想得到之前 5000 次运行的结果(,或者它遇到了一些意外的错误,它突然退出并丢失了之前的结果。 是否可以在 PYTHON 中异常退出之前执行一个函数(例如保存一些我想要的结果/变量(,以便我可以保留已经获得的结果?

您可以将代码包装在 try/finally 中,并将获得的结果保存到 finally 语句中的文件中。这将finally执行代码,无论您的代码是否异常退出。异常退出包括通过按 CTRL+C 故意在执行中途中断脚本的情况(引发键盘中断异常(。

import pickle
def MC_SIMULATION():
    # your code
    return something
results = []
i = 0
try:
    for _ in range(10000):
        results.append(MC_SIMULATION())
        i += 1
finally: #runs whether or not an exception was raised in the try statement
    with open("MC_"+str(i)+".pickle",'w') as f:
        pickle.dump(results, f)

现在,您可以等待脚本完成并保存结果,也可以在中间中断它CTRL+C,到目前为止获得的结果仍将保存。

最新更新