在Python中进行多处理时,全局变量是否会在每个进程中被复制?
问题描述:
我们已经有一些函数被调用由runInParallel
您将在此找到答案使用的并行处理:https://*.com/a/7207336/720484在Python中进行多处理时,全局变量是否会在每个进程中被复制?
所有这些功能都应该有机会获得他们应该读一个单一的全局变量。
这个全局变量实际上是一个类的实例。这个实例包含一个成员变量/属性,并且所有进程都可以读写它。
但是事情并不是这样发生的。对象(类实例)似乎被复制,并且其属性在每个进程中都是独立的。所以如果一个进程改变了这个值,这对另一个进程的变量是不可见的。
这是预期的行为?
如何克服它?
谢谢
答
所有子进程将继承该实例从父进程分叉的时刻。在fork之后,不会在子级和父级中对实例进行任何更改。
这就是Linux中进程的工作原理 - 每个进程都有自己的内存,并且受到其他进程的保护(除非您有意共享它)。它不是Python特定的。
一般来说,你要找的是IPC(进程间通信)。流程可以通过多种方式与彼此进行交流。您可能想要使用管道或共享内存。
在Python中,请阅读:https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes
downvoting without explanation is equal to欺凌 –