【发布时间】:2018-03-11 23:56:31
【问题描述】:
我有一个父进程在一个类中运行一个子进程。子进程需要更长的时间才能完成。我想确保父进程终止时子进程不会终止。我该怎么做?
这是我的代码的一个非常简化的版本:
# myClass.py
from multiprocess import Process
class myClass(self):
def __init__(self):
print ('setup the object')
def parentProcess(self, idx)
p = Process(target=childFunc)
p.start()
time.sleep(3)
print ('parent is done with ' + str(idx))
def childProcess(self):
print ('do some childish stuff')
time.sleep(8)
这就是我运行父进程的方式
# main.py
from multiprocessing import Process
myClass import myClass
myC = myClass()
for i in range(10):
p = Process(target=myC.parentProcess, args=i)
p.start()
p.join()
【问题讨论】:
-
您使用哪种操作系统?
-
@tdelaney Ubuntu
-
从我的头顶开始:fork 两次,更改 pgroup,从终端分离,阅读 Stevens 的 APUE
-
@wildplasser 对不起,我对多处理有点陌生,不明白你所说的任何这些事情。能说清楚一点吗?
-
通常,父进程应该管理它的子进程,或者子进程应该能够完全独立于父进程来处理自己(这是@wildplasser 的建议)。双叉子将子节点从控制台会话中取出并归
init所有,它将处理它的僵尸状态。
标签: python ubuntu parent-child python-multiprocessing child-process