python多处理池.apply\u async

2024-09-27 00:19:26 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使python多处理代码对增加的数据量更加健壮? 我使用pool.apply\u async为每个染色体、模拟和分割提交作业。 每个拆分最多可以有100K行。通过这种方式,我使每一份工作的规模相等。 并累积来自pool.apply\u async的结果

    numofProcesses = multiprocessing.cpu_count()
    pool = multiprocessing.Pool(processes=numofProcesses,maxtasksperchild=10)

    all_result1={}
    all_result2={}

    def accumulate(result):
     result1=result[0]
     result2=result[1]
     accumulate(resulst1,all_result1)
     accumulate(resulst2,all_result2)

    for each chr:
     for each sim:
      for each chrbased_simbased_split:
         pool.apply_async(func, args=(too,many,),callback=accumulate_result)

  pool.close()
  pool.join()

但是,似乎完成了太多的pool.apply\u异步调用。 e、 g:从(chr1,sim1)开始,已经完成了(chr1,sim97)的作业调用,而(chr1,sim3)的结果尚未返回。 因此,池中活动的作业太多,占用了大量内存

是否有一种方法可以以更可控的方式发送作业:当作业完成时,否则pool.apply\u async会消耗大量内存(~50 GB),并且很快会出现内存错误

希望我能得到一些帮助。 谢谢


Tags: 内存forasync作业方式resultallaccumulate

热门问题