我必须在 Linux 中使用带有“spawn”上下文的 Process 方法。然后我写了一个示例代码如下:
from multiprocessing import Value
import multiprocessing
class Test(object):
def __init__(self, m_val):
print("step1")
self.m_val = m_val
print("step2")
self.m_val_val = m_val.value
self.prints()
def prints(self):
print("self.m_val_val:%d"%self.m_val_val)
def main(m_val):
t = Test(m_val)
if __name__ == "__main__":
N = 2
procs = []
v = Value("i",10)
for i in range(0,N):
proc_i = multiprocessing.get_context("spawn").Process(target=main,args=(v,))
proc_i.daemon=True
procs.append(proc_i)
for i in range(0,N):
procs[i].start()
for i in range(0,N):
procs[i].join()
Run Code Online (Sandbox Code Playgroud)
当我在 Linux 中运行这段代码时,它将打印:
step1
step2
step1
step2
Run Code Online (Sandbox Code Playgroud)
而在Windows中,打印内容将是:
step1
step2
self.m_val_val:10
step1
step2
self.m_val_val:10
Run Code Online (Sandbox Code Playgroud)
此外,屏幕上也没有打印任何错误信息。那么,我该如何解决这个问题,即如何在Linux中使用“spawn”上下文时在进程之间使用多处理值?