在Python中进行多处理时,全局变量是否会在每个进程中被复制?

问题描述:

我们已经有一些函数被调用由runInParallel您将在此找到答案使用的并行处理:https://*.com/a/7207336/720484在Python中进行多处理时,全局变量是否会在每个进程中被复制?

所有这些功能都应该有机会获得他们应该读一个单一的全局变量。
这个全局变量实际上是一个类的实例。这个实例包含一个成员变量/属性,并且所有进程都可以读写它。

但是事情并不是这样发生的。对象(类实例)似乎被复制,并且其属性在每个进程中都是独立的。所以如果一个进程改变了这个值,这对另一个进程的变量是不可见的。

这是预期的行为?

如何克服它?

谢谢

+0

downvoting without explanation is equal to欺凌 –

所有子进程将继承该实例从父进程分叉的时刻。在fork之后,不会在子级和父级中对实例进行任何更改。

这就是Linux中进程的工作原理 - 每个进程都有自己的内存,并且受到其他进程的保护(除非您有意共享它)。它不是Python特定的。

一般来说,你要找的是IPC(进程间通信)。流程可以通过多种方式与彼此进行交流。您可能想要使用管道或共享内存。

在Python中,请阅读:https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes