multiprocessing.Pool导致python中的内存错误

时间:2018-01-09 03:16:13

标签: python-2.7 memory multiprocessing

我编写了一个多进程(通过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完成时没有完成进程,但是保持所有进程一起完成

如何解决此问题?

0 个答案:

没有答案