我的python代码创建了一个巨大的哈希表(60GB +),在该表上将执行许多繁重的只读操作。为了加快速度,我在创建哈希表后将进程分叉几次,以便每个操作可以同时完成(48核机器)。
一旦所有这些分叉的孩子完成了他们的事情,我希望合并他们的输出,所以我需要一种方法让父进程能够等待多个pid。我如何实现这一目标?
分叉是这里的关键部分,因为我依赖分叉进程的内存页面映射到父地址空间来减少占用空间。哈希表由另一个库创建,因此修改其实现不是一种选择。
children = []
for index in batch:
tracks = batch[index]
pid = os.fork()
if pid == 0:
# forked process
run_batch(tracks, index)
else:
# main process
children.append(pid)
print('spawned child ', pid)