为何TK环境下Python进程残留,命令行关闭时却异常终止?
问题原因解析
TK环境下sys.exit(1)无法终止子进程的原因
sys.exit(1)本质是触发SystemExit异常,它只会终止当前调用它的线程所在的进程(也就是Main.py对应的进程)。- 你启动的
schedule.py和start.py都是独立的Process级进程,它们和父进程(Main.py)是操作系统层面完全分离的个体,默认情况下父进程的退出不会联动终止子进程。除非创建子进程时显式设置守护进程属性,或者父进程退出前主动发送终止信号给子进程,否则这些子进程会继续独立运行,自然会持续写入日志。
非TK环境下关闭命令行窗口进程不立即终止的原因
- 在Windows系统中,关闭命令行窗口时,系统会向窗口内的主进程发送
WM_CLOSE通知,但Python解释器默认不会直接响应这个通知终止进程,程序会继续执行后续代码。 - 只有当程序执行到需要和控制台交互的操作(比如
print输出)时,因为控制台窗口已经关闭,I/O操作会失败并抛出异常,这时Python解释器才会终止进程。如果程序后续没有这类控制台交互逻辑,进程可能会一直后台运行。
内容的提问来源于stack exchange,提问作者Si si
相关产品推荐
相关产品推荐

