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

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

阅读 750
1 个回答
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']}")
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题