Python fork(): 从子进程向父进程传递数据

10 投票
1 回答
4434 浏览
提问于 2025-04-16 18:53

我有一个主Python进程,还有一些由主进程通过 os.fork() 创建的工作进程。

我需要把一些比较大且复杂的数据结构从工作进程传回主进程。你有什么现成的库可以推荐吗?

这些数据结构包括列表、字典、 numpy 数组、自定义类(我可以进行调整)以及这些的多层组合。

我希望避免使用磁盘输入输出。如果能避免创建数据的副本,比如使用某种共享内存的解决方案,那就更好了,但这不是硬性要求。

为了这个问题,工作进程必须是通过 os.fork() 创建的,或者是一个能克隆主进程地址空间的包装器。

这个方案只需要在Linux上运行。

1 个回答

4

multiprocessing的队列实现是怎么工作的呢?其实,它在内部会把数据进行“打包”,然后通过一个管道传输。

q = multiprocessing.Queue()
if (os.fork() == 0):
    print(q.get())
else:
    q.put(5)
# outputs: 5

撰写回答