大家好,A进程用multiprocessing起了一个进程B,然后A断了,停了,怎么找B呢?

作者站长头像
站长
· 阅读数 20

A用multiprocessing起了一个进程B,然后A断了,停了,怎么找B呢?

回复
1个回答
avatar
test
2024-06-27
from multiprocessing import Process
import os

def f(name):
    print('hello', name)

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    
    # 保存进程B的PID
    with open("process_b.pid", "w") as file:
        file.write(str(p.pid))
    
    # 假设这个地方A进程停止了

用kill命令来停止进程B


kill $(cat process_b.pid)

用进程组:

import os
from multiprocessing import Process

def f(name):
    os.setpgid(0, 0)
    print('hello', name)

if __name__ == '__main__':
    p = Process(target=f, args=('bob',))
    p.start()
    
    with open("process_b_gid", "w") as file:
        file.write(str(os.getpgid(p.pid)))

    # 假设这里A进程停止了

用kill命令来停止进程B组

kill -- -$(cat process_b_gid)

没提前写的话:用命令行工具:

ps aux | grep '进程B的一些特征'

或者用第三方库:

pip install psutil`

然后:

import psutil

for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
  
    if '进程B的一些特征' in proc.info['name'] or '进程B的一些特征' in str(proc.info['cmdline']):
        print(f"找到进程B: PID={proc.info['pid']}")
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容