例如,在长时间重复的蒙特卡罗运行期间,我想在程序正常退出之前终止程序(就像 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
,到目前为止获得的结果仍将保存。