我想在父进程和其子进程之间共享一个multiprocessing.Array:
self.procs = [MP.Process(target=worker, kwargs=dict(sh_array=array)
for _ in range(num_workers)]上面的代码做得对吗?当我访问共享数组时,我只想要基于共享内存/文件映射的快速IPC通信。我不希望任何消息传递或复制的IPC发生在幕后。这将违背我正在编写的代码的目的。
另外,我想以同样的方式传递一个类的不同实例,这些实例都引用相同的共享数组。这是正确的,还是应该单独传递共享数组,然后手动重建子进程中的对象?
发布于 2018-03-26 15:17:01
上面的代码做得对吗?
是的,这正是multiprocessing.Array的作用和它的使用方式。
当我访问共享数组时,我不希望任何IPC通信。
我不认为"IPC“这个词在这里使用正确。IPC代表进程间通信,如果您有一个在进程之间共享的数组,那么写入该数组的任何内容都可以从其他进程中读取。换句话说,您是在进程之间进行通信。换句话说,IPC。共享内存是IPC,如果您不想要IPC,那么您就不能在进程之间共享东西。
你的意思可能完全不同。也许你不想来回传递信息,或者诸如此类的东西?
另外,我想以同样的方式传递一个类的不同实例,这些实例都引用相同的共享数组。这是正确的,还是应该单独传递共享数组,然后手动重建子进程中的对象?
这两种方法都有效。选择哪个选项都可以使代码读起来更自然。
https://stackoverflow.com/questions/49494741
复制相似问题