python:在multiprocessing.Process中传递对象时会发生什么?

时间:2011-05-04 03:59:39

标签: python

p = Process(target=f, args=(myObject,))
p.start()
p.join()

从实验开始,在函数f()内,我可以正常访问myObject,其成员似乎完好无损,即使我们可能处于不同的过程中。在当前函数和id(myObject)中打印f()会返回相同的数字。

myObject内访问f()时,Python秘密执行IPC吗?

2 个答案:

答案 0 :(得分:1)

实际过程取决于您是在运行unix还是windows。

在* nix上,使用fork()创建进程的完整副本。

在Windows上,我相信该对象被腌制(参见pickle模块)并通过一些IPC频道发送。

答案 1 :(得分:1)

正如温斯顿写道:在Unix上,进程将被分叉,分叉进程基本上是父进程的完整副本(这就是id相同的原因)。