Python fork():将数据从子节点传递给父节点

NPE*_*NPE 9 python fork numpy shared-memory large-data

我有一个主要的Python进程,以及由主进程使用创建的一堆或工作者os.fork().

我需要将大量且相当复杂的数据结构从工作者传递回主进程.你会推荐哪些现有的图书馆?

数据结构是列表,字典,numpy数组,自定义类(我可以调整)和上面的多层组合的混合.

应避免磁盘I/O. 如果我还可以避免创建数据的副本 - 例如通过使用某种共享内存解决方案 - 这也很好,但不是一个硬约束.

出于此问题的目的,必须使用os.fork()克隆主进程的地址空间或其包装来创建工作程序.

这只需要在Linux上运行.

Spf*_*cal 4

multiprocessing的队列实现有效。在内部,它将数据腌制到管道中。

q = multiprocessing.Queue()
if (os.fork() == 0):
    print(q.get())
else:
    q.put(5)
# outputs: 5
Run Code Online (Sandbox Code Playgroud)