基本上我写的是一个可以随时停止和恢复的脚本。所以如果用户使用,比如说PyCharm console来执行程序,他可以随时点击停止按钮。现在,我需要保存一些变量,让一个正在运行的函数在终止之前完成。我使用什么函数来完成这个任务?我已经试过atexit.register()了,但无济于事。还有,我如何确保正在进行的功能在程序退出之前完成?
PyCharm console
atexit.register()
6yt4nkrj1#
使用了一个非常糟糕的解决方案。我使用了Python中所有与退出相关的函数,包括SIG* 函数,但唯一的一点是,当Python程序在PyCharm应用程序中按下“Stop”按钮停止时,我没有找到一种方法来捕捉退出信号。最后,通过使用tkinter打开一个空窗口,我的程序在后台线程中运行,得到了一个解决方案。并使用它来关闭/停止程序执行。工作非常出色,捕捉SIG* 信号以及执行atexit。无论如何,非常感谢@scrineym,因为链接确实给了我很多有用的信息,确实帮助了我开发最终版本。
wkftcu5l2#
看起来你可能想捕捉一个信号。当一个程序被告知停止一个信号从操作系统发送到进程,然后你可以捕捉他们并在退出前做清理.有许多不同的信号,例如当你按CTRL+C一个SIGINT信号是由操作系统发送停止你的进程,但有许多其他.请参见此处:How do I capture SIGINT in Python?这里是信号库:https://docs.python.org/2/library/signal.html
2条答案
按热度按时间6yt4nkrj1#
使用了一个非常糟糕的解决方案。我使用了Python中所有与退出相关的函数,包括SIG* 函数,但唯一的一点是,当Python程序在PyCharm应用程序中按下“Stop”按钮停止时,我没有找到一种方法来捕捉退出信号。最后,通过使用tkinter打开一个空窗口,我的程序在后台线程中运行,得到了一个解决方案。并使用它来关闭/停止程序执行。工作非常出色,捕捉SIG* 信号以及执行atexit。无论如何,非常感谢@scrineym,因为链接确实给了我很多有用的信息,确实帮助了我开发最终版本。
wkftcu5l2#
看起来你可能想捕捉一个信号。
当一个程序被告知停止一个信号从操作系统发送到进程,然后你可以捕捉他们并在退出前做清理.有许多不同的信号,例如当你按CTRL+C一个SIGINT信号是由操作系统发送停止你的进程,但有许多其他.
请参见此处:How do I capture SIGINT in Python?
这里是信号库:https://docs.python.org/2/library/signal.html