栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python清理僵尸进程的两种方法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python清理僵尸进程的两种方法

import multiprocessing as mp
from time import sleep
import shortuuid
import os
import psutil

# 方法1 信号
import signal
signal.signal(signal.SIGCHLD, signal.SIG_IGN)

class P(mp.Process):
    def __init__(self, name):
        super(P, self).__init__()
        self.name = name
        
        
    def run(self):
        sleep(5)
        
        

if __name__ == '__main__':
    ps = []
    for _ in range(10):
        name = str(shortuuid.uuid())
        print(name)
        ps.append(P(name))

    ps[0].daemon = True
    for p in ps:
        p.start()
    
    # 父进程id
    pid = os.getpid()
    p_g = psutil.Process(pid)


    while True:

        # print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>", flush=True)
        # 所有子进程对象,包括执行中、sleeping、僵尸进程等
        children = p_g.children()
        if len(children) == 0:
            break
        print(children)
        sleep(1)
        
        # 方法2 waitpid,如果不存在子进程则抛异常
        # try:
        #     os.waitpid(-1, os.WNOHANG)
        # except Exception as e:
        #     break


    print("finished")

waipid和signal

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号