
Python 3.6.8
Process Process-2:
Traceback (most recent call last):
File "/usr/lib64/python3.6/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib64/python3.6/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "main.py", line 75, in mf_insp
with Manager() as manager:
File "/usr/lib64/python3.6/multiprocessing/context.py", line 56, in Manager
m.start()
File "/usr/lib64/python3.6/multiprocessing/managers.py", line 513, in start
self._process.start()
File "/usr/lib64/python3.6/multiprocessing/process.py", line 103, in start
'daemonic processes are not allowed to have children'
AssertionError: daemonic processes are not allowed to have children子进程 又 创建 子进程, 且使用了daemon=True
from multiprocessing import Process
import os
def f():
print("F: {pid}".format(pid=os.getpid()))
p = Process(target=c,)
p.start()
p.join()
def c():
print("C: {pid}".format(pid=os.getpid()))
if __name__ == '__main__':
thread_list={}
for i in range(4):
thread_list[i] = Process(target=f, daemon=True)
for i in range(4):
thread_list[i].start()
for i in range(4):
thread_list[i].join()/ 表示未设置相关参数
父进程 | 子进程 | 效果 |
|---|---|---|
/ | daemon=True | 正常 |
daemon=True | daemon=True | 报错 |
daemon=True | / | 报错 |
/ | / | 正常 |
都去掉daemon=True就行, 也可以按上面的测试结果设置..
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。