Python fork():将数据从子级传递给父级
Posted
技术标签:
【中文标题】Python fork():将数据从子级传递给父级【英文标题】:Python fork(): passing data from child to parent 【发布时间】:2011-09-07 19:05:07 【问题描述】:我有一个主 Python 进程,以及由主进程使用 os.fork()
创建的一堆或多个工人。
我需要将大量且相当复杂的数据结构从工作人员传回主进程。您会为此推荐哪些现有库?
数据结构混合了列表、字典、numpy
arrays、自定义类(我可以调整)和上述的多层组合。
应避免磁盘 I/O。如果我也可以避免创建数据副本——例如通过某种共享内存解决方案——那也很好,但不是硬约束。
就本问题而言,必须使用os.fork()
或其包装器创建工作器,从而克隆主进程的地址空间。
这只需要在 Linux 上运行。
【问题讨论】:
"应避免磁盘 I/O。"我假设这不包括分页,在内存中的数据量增长到足以需要分页的情况下。 @JAB:你的假设是正确的。但是,最终的解决方案应该是明智地使用内存。 【参考方案1】:multiprocessing
的队列实现有效。在内部,它将数据腌制到管道中。
q = multiprocessing.Queue()
if (os.fork() == 0):
print(q.get())
else:
q.put(5)
# outputs: 5
【讨论】:
以上是关于Python fork():将数据从子级传递给父级的主要内容,如果未能解决你的问题,请参考以下文章