在 Python 中停止程序并保存数据的最佳方法是什么?

bob*_*h76 2 python

我对在 Python 中运行时停止程序不感兴趣,当然,控制 c 可以做到这一点。我感兴趣的是以下情况:假设您有一个运行 5 小时的程序。您让它运行了两个小时,然后决定到目前为止您所做的事情值得保存,但您仍然不想继续。那么保存数据和退出程序的最佳方法是什么?到现在为止,我所做的是在泡菜中存储一个布尔值,然后在每个循环中打开泡菜并检查其值。如果布尔值为真,则程序继续运行,如果为假,则程序停止并保存数据并退出。我可以使用不同的程序更改布尔值。然而,即使泡菜只由一个布尔值组成,它仍然会严重减慢程序的速度,可能多达 10 倍,因为泡菜需要很长时间才能打开。我考虑过其他解决方案,我知道 pdb_trace() 工具,但我真的不知道在这种情况下如何使用它。我在想也许设置环境变量可能会有所帮助,但我不太擅长设置环境变量。任何建议,将不胜感激。

Sam*_*Neb 5

答案包括检查环境中的变量和文件等内容。这些都行,但你能不能:

try:
  main()
except KeyboardInterrupt:
  save()
Run Code Online (Sandbox Code Playgroud)

或者,如果保存过程与您在 main 完成后使用的过程相同,则更强大的策略是

try:
  main()
finally:
  save()
Run Code Online (Sandbox Code Playgroud)

在这里,save()将运行任何错误,KeyboardInterrupt 否则。如果main()成功,它也会运行。

如果你想用一个单独的程序关闭它,你可以发送一个信号。

  • @bobsmith76我认为`除了KeyboardInterrupt:`应该替换为`finally:`以便始终将工作至少保存到某个临时文件中,不仅在键盘中断时应该保存它,而且在良好退出和出现任何错误时也应保存发生保存以前的工作。恕我直言。 (2认同)