首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享对象而不使用IPC通信

共享对象而不使用IPC通信
EN

Stack Overflow用户
提问于 2018-03-26 15:07:33
回答 1查看 103关注 0票数 1

我想在父进程和其子进程之间共享一个multiprocessing.Array

代码语言:javascript
复制
self.procs = [MP.Process(target=worker, kwargs=dict(sh_array=array)
              for _ in range(num_workers)]

上面的代码做得对吗?当我访问共享数组时,我只想要基于共享内存/文件映射的快速IPC通信。我不希望任何消息传递或复制的IPC发生在幕后。这将违背我正在编写的代码的目的。

另外,我想以同样的方式传递一个类的不同实例,这些实例都引用相同的共享数组。这是正确的,还是应该单独传递共享数组,然后手动重建子进程中的对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-26 15:17:01

上面的代码做得对吗?

是的,这正是multiprocessing.Array的作用和它的使用方式。

当我访问共享数组时,我不希望任何IPC通信。

我不认为"IPC“这个词在这里使用正确。IPC代表进程间通信,如果您有一个在进程之间共享的数组,那么写入该数组的任何内容都可以从其他进程中读取。换句话说,您是在进程之间进行通信。换句话说,IPC。共享内存是IPC,如果您不想要IPC,那么您就不能在进程之间共享东西。

你的意思可能完全不同。也许你不想来回传递信息,或者诸如此类的东西?

另外,我想以同样的方式传递一个类的不同实例,这些实例都引用相同的共享数组。这是正确的,还是应该单独传递共享数组,然后手动重建子进程中的对象?

这两种方法都有效。选择哪个选项都可以使代码读起来更自然。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49494741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档