gpt4 book ai didi

Python 多处理。你如何从 child 那里得到 parent 的地位?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:14 25 4
gpt4 key购买 nike

我正在使用 multiprocessing 模块编写一个应用程序 (Linux),该模块生成多个子进程。当 child 死亡时,我可以使用如下方式从 parent 那里检测到它:

process = multiprocessing.Process(...)
if process.is_alive():
print "Process died"

但是,我还希望能够从子进程中检测到父进程是否还活着,以便在有人离开并 kill -9 的父进程时进行清理。

从上面的示例中,我可以使用以下任一方法获取父 ID:

process._parent_pid

或者:

os.getppid()

但我找不到一种简单的方法来获取进程的状态。我宁愿不使用子进程写一些东西来 grep/regex ps 列表。有更清洁的方法吗?

最佳答案

您可以将父进程 ID 与 1 进行比较;如果它是 1 那么你可以推断出父进程已经终止,因为子进程现在有 init 进程(pid 1)作为父进程。

import os
import time
from multiprocessing import Process

def subprocess():
while True:
ppid = os.getppid()
print "Parent process id:", ppid
if ppid == 1:
print "Parent process has terminated"
break
time.sleep(1)

p = Process(target=subprocess)
p.start()

关于Python 多处理。你如何从 child 那里得到 parent 的地位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28597692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com