zaq1103 发表于 2023-12-6 22:48

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:07

本帖最后由 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]
查看完整版本: Python程序在关闭后仍在运行(multiprocessing)