python多进程编程,如何让主进程和子进程都退出 您所在的位置:网站首页 python如何关闭进程 python多进程编程,如何让主进程和子进程都退出

python多进程编程,如何让主进程和子进程都退出

2023-08-21 13:08| 来源: 网络整理| 查看: 265

  python的多线程不是真正的多线程,所以使用多进程来实现高并发,比如训练模型读取数据时,但是kill只会杀死相应的进程ID,由于真实环境下子进程太多,一个一个去kill太麻烦,下面实现了只需要杀死主进程id即可同时使子进程也退出:

  1.主进程和子进程的进程组ID是一样的,通过杀死进程组ID使主进程和子进程都退出 

  2.通过signal.signal(signal.SIGTERM, term)注册操作系统信号量处理方法

from multiprocessing import Process import os import time import signal def gan_huo_de_jin_cheng(x): print('fun current pid is %s, group id is %s' % (os.getpid(), os.getpgrp())) while True: print('args is %s ' % x) time.sleep(1) def term(sig_num, addtion): print('term current pid is %s, group id is %s' % (os.getpid(), os.getpgrp())) os.killpg(os.getpgid(os.getpid()), signal.SIGKILL) signal.signal(signal.SIGTERM, term) print('master pid is %s' % os.getpid()) for i in range(3): t = Process(target=gan_huo_de_jin_cheng, args=(str(i),)) t.daemon = True t.start() # 不管是ctrl+c还是kill -15 master pid还是主进程运行完毕,主进程和子进程都能正常退出 i = 0 while True: if i >= 50: break print('this is master') time.sleep(1) i += 1

  会抛出异常,不过不需要处理。

 

 

    有问题加QQ群:877769335

    或者用QQ扫描二维码加群:

    

 

 

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有