Python 多处理池内存使用过度

Python 多处理池内存使用过度,python,python-multiprocessing,Python,Python Multiprocessing,我试图在Python3.6中使用多处理将字典中的每个条目输出到JSON文件。代码如下: def export_json(t): path = os.path.join(t[2], t[0] + '.json') with open(path, 'w') as json_file: json.dump(t[1], json_file, indent = 4) class TrackExportHelper(): def execute(self):

我试图在Python3.6中使用多处理将字典中的每个条目输出到JSON文件。代码如下:

def export_json(t):
    path = os.path.join(t[2], t[0] + '.json')
    with open(path, 'w') as json_file:
        json.dump(t[1], json_file, indent = 4)

class TrackExportHelper():

    def execute(self):
        pool = Pool(processes = self.num_threads)
        pool.map(export_json, self.enumerate())

    def enumerate(self):
        for track in self.tracks:
            yield (track, copy.deepcopy(self.tracks[track]), self.output_dir)
这是大型代码库的一小部分,但基本上,
self.tracks
是程序中唯一的数据对象,从大型JSON文件加载,并在进入此阶段之前进行处理。在调用
execute
之前,内存使用量约为34GB。但是,对于12个进程的池,内存使用率达到160GB。注释掉实际的
json.dump
行似乎不会影响内存使用

这一间接费用数额合理吗?我预计,由于每个顶级字典只复制一次,因此在一些小开销的情况下,原始数据的内存使用量最多会增加一倍,但是删除
deepcopy
只会略微减少内存使用量(我主要添加了
deepcopy
,以避免由于引用计数导致的写时复制复杂化而导致不必要的内存使用,但似乎没有帮助)

如何在并行化此阶段的同时减少此开销