Python程序在关闭后仍在运行(multiprocessing)
本帖最后由 zaq1103 于 2023-12-6 22:51 编辑import psutil
import subprocess
import multiprocessing
global a
a=1
def monitor():
def is_task_manager_running():
for proc in psutil.process_iter():
if proc.name() == 'Taskmgr.exe':
proc.terminate()
while a:
is_task_manager_running()
def windows():
#内容省略
a=0
if __name__ == '__main__':
multiprocessing.freeze_support()
process1 = multiprocessing.Process(target=window)
process2 = multiprocessing.Process(target=monitor)
process1.start()
process2.start()
process1.join()
process2.join()
这是一个在运行windows()函数同时监控任务管理器是否运行的程序,如果运行则自动关闭。但是实际使用中发现,程序运行结束后(无论是IDLE中还是打包为exe后),后台仍会继续监控并关闭任务管理器(即使程序已关闭)。只能通过重启解决。
大佬们有解决方法吗?{:1_889:} 本帖最后由 T4DNA 于 2023-12-7 13:16 编辑
(https://zhuanlan.zhihu.com/p/492615876?utm_id=0)
定义一个清除函数
```
def cleanup():
print("Cleanup multiprocessing called")
for process in multiprocessing.active_children():
process.terminate()
process.join()
```
注册到axiet
```
atexit.register(cleanup)
```
页:
[1]