在Python中进行多处理时,在每个过程中都会复制全局变量



我们已经通过runInParallel调用一些函数来使用并行处理,您将在此答案中找到:https://stackoverflow.com/a/a/7207336/720484

所有这些功能都应该可以访问他们应该阅读的单个全局变量。
该全局变量实际上是类的实例。此实例包含成员变量/属性,所有过程都读写为其。

但是,事情并非如此。对象(类实例)似乎已复制,并且其属性在每个过程中都是独立的。因此,如果一个过程更改值,则另一个过程的变量看不到。

的变量。

这是预期的行为吗?

如何克服它?

谢谢

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

这是该过程在Linux中工作的方式 - 每个过程都有自己的内存,可以保护其他过程(除非您有意共享)。它不是特定于Python的。

您要寻找的是一般称为IPC(过程间通信)。流程可以通过多种方式相互通信。您可能需要使用管道或共享内存。

在python中,阅读以下内容:https://docs.python.org/2/library/multiprocessing.html#sharing-state-betercesses

最新更新