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

在Python中执行多处理时,是否在每个进程中复制全局变量?,python,global-variables,python-multiprocessing,Python,Global Variables,Python Multiprocessing,我们使用了并行处理,通过runInParallel调用一些函数,您可以在下面的答案中找到: 所有这些函数都应该能够访问一个全局变量,并读取该变量。 这个全局变量实际上是一个类的实例。此实例包含一个成员变量/属性,所有进程都对其进行读取和写入 然而,事情并不是这样发生的。对象(类实例)似乎是复制的,其属性在每个进程上都是独立的。因此,如果一个进程更改了该值,则另一个进程的变量将看不到该值 这是预期的行为吗 如何克服它 谢谢在从父进程分叉时,所有子进程都将继承该实例。在fork之后,将看不到在子实例

我们使用了并行处理,通过
runInParallel
调用一些函数,您可以在下面的答案中找到:

所有这些函数都应该能够访问一个全局变量,并读取该变量。
这个全局变量实际上是一个类的实例。此实例包含一个成员变量/属性,所有进程都对其进行读取和写入

然而,事情并不是这样发生的。对象(类实例)似乎是复制的,其属性在每个进程上都是独立的。因此,如果一个进程更改了该值,则另一个进程的变量将看不到该值

这是预期的行为吗

如何克服它


谢谢

在从父进程分叉时,所有子进程都将继承该实例。在fork之后,将看不到在子实例和父实例中对实例所做的任何更改

这就是Linux中进程的工作方式——每个进程都有自己的内存,不受其他进程的影响(除非您有意共享它)。它不是特定于Python的

您所寻找的通常称为IPC(进程间通信)。流程之间可以通过多种方式进行通信。您可能需要使用管道或共享内存


在Python中,请阅读以下内容:

在从父进程分叉时,所有子进程都将继承该实例。在fork之后,将看不到在子实例和父实例中对实例所做的任何更改

这就是Linux中进程的工作方式——每个进程都有自己的内存,不受其他进程的影响(除非您有意共享它)。它不是特定于Python的

您所寻找的通常称为IPC(进程间通信)。流程之间可以通过多种方式进行通信。您可能需要使用管道或共享内存


在Python中,请阅读以下内容:

不加解释的向下投票等于欺负。不加解释的向下投票等于欺负