我编写了一个多进程(通过python 2.7)程序,这是我的主要代码:
def pro_func(id):
#process a slice of huge csv file and send the output list to
#another function
list_index=[]
for i in range(0,total_shard_cnt,1):
list_index.append(i)
print(list_index)
pool = Pool(processes=total_shard_cnt)
result = pool.map(pro_func,list_index)
print(result)
和pro_func
是一个函数由每个进程执行,它将函数的输出列表传递给另一个函数,但是当我运行代码时它会导致 Memoryerror ,因为:
pro_func的输出是巨大的列表,代码将所有结果保存在ram中直到完成所有进程,并且在pro_func完成时没有完成进程,但是保持所有进程一起完成
如何解决此问题?