python 如何将一个跨进程dict用共享内存实现?

新手上路,请多包涵

场景

有一个dict需要在跨很多进程,每次跨进程这个dict都会增减一些数据,数据大小不定

说起跨进程,优先考虑的当然是共享内存,但是大小不定这个情况又得由自己来实现动态扩容,请问各位有过这个经验么,共享内存是否可行?实现起来效果如何呢?

阅读 6.2k
2 个回答
  1. 应该找出性能瓶颈。
  2. 用共享内存去实现类似的 dict,结果不会更好。

不如另辟蹊径,如

  • 用简单的数据结构代替 dict,比如数组。这样用共享内存实现也更高效。
  • 把共享数据集中到一个独立的进程,开放接口给其他进程使用。典型的如 redis, 数据库。

你不需要考虑如何共享的问题,python之所以用的人多,就是因为它提供了足够简单的操作给普通人。你直接定义一个dict的变量,直接在“进程函数”中操作这个变量就行,要考虑的就仅仅是用multiprocess 中的lock 解决进程同步的问题。如果你可以用多线程实现尽量就不要用多进程,python的多进程为了方便普通人用,设计的并不好(其实多线程也是)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题