【发布时间】:2021-10-03 17:38:02
【问题描述】:
我必须确保 end_event() 函数在程序结束时执行。我试图将其实现为 Python 的 atexit。但是,当使用 PyInstaller 将 .py 文件转换为 exe 文件并单击关闭时,它不起作用。如果您能告诉我一个始终有效的解决方案,我将不胜感激。祝你有美好的一天。
import atexit
import signal
import pyupbit
def end_event():
for keys in buy_list.keys():
order = upbit.get_order(keys)
if "state" in order:
if(order['state'] == 'wait'):
upbit.cancel_order(keys)
exit(1)
atexit.register(end_event)
signal.signal(signal.SIGINT, end_event)
【问题讨论】:
-
“点击关闭”——如果它通过对默认操作系统行为的处理,这实际上是 Windows 中的 KILL -9。
-
那么,这种情况下是不是没有办法在Python代码上实现呢? (哭……)
-
用一个小的 PyTK 包装器打包它(然后你就可以控制 UI 方面了..)?
-
启动独立(两部分)进程?那么当“客户端”(即windows终端的子进程)死掉时,“服务器”可以干净地关闭吗?
-
有趣!我也试试这个方法。谢谢你的回答!