如对我的问题的评论所示,答案来自Puciek。
解决方案是在完成后关闭进程池。我认为它将自动关闭,因为该
results变量位于本地
RunMany,并且在
RunMany完成后将被删除。但是,python并不总是能按预期工作。
固定代码为:
def RunMany(inputs):from multiprocessing import cpu_count, Poolproc=inputs[0]pool=Pool(processes = proc) results=[]for arg1 in inputs[1]: for arg2 in inputs[2]: for arg3 in inputs[3]: results.append(pool.apply_async(RunOne, args=(arg1, arg2, arg3)))#new sectionpool.close()pool.join() #end new sectioncasenum=0datadict=dict()for p in results: #get results of simulation once it has finished datadict[casenum]=p.get() casenum+=1return datadict



