例如,在长时间重复的蒙特卡罗运行期间,我想在程序正常退出之前终止我的程序(就像10000MC运行一样,我希望在5000次运行完成后终止。但我仍然希望得到结果之前的5000次运行。),或者遇到了一些意想不到的错误,它突然退出,失去了之前的结果。是否有可能在PYTHON异常退出之前执行一个功能(比如保存一些我想要的结果/变量),以便我可以保持已经获得的结果?
答案 0 :(得分:0)
您可以将代码包装在try/finally
中,并将获得的结果保存到finally
语句中的文件中。这将执行finally
中的代码,无论您的代码是否异常退出。异常退出包括当您通过按CTRL+C
(引发KeyboardInterrupt异常)故意中断脚本执行时的情况。
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
中间中断脚本,目前为止获得的结果仍然会被保存。