我正在使用多处理模块和一个工作池来在一个耗时的函数上运行循环,该函数应该将结果写入文件。问题是我第一次运行循环时函数正确执行但没有写入文件。第二次运行循环时,一切正常,文件写得正确。
从第一次到第二次运行循环的变化有什么想法吗?我该怎么做才能确保文件被写入?
代码看起来像这样:
def costlyfunction(Qnorm):
#time comsuming loop to calculate "outputarray"
#save histogram to file
filename= filenamebase + "_hist_%0.2f" % Qnorm + '.dat'
np.savetxt(filename, outputarray,delimiter=" ")
return
mppool=multiprocessing.Pool(ncpus)
Qnormtest=[0.5]
for Qnorm in Qnormtest:
mppool.apply_async(costlyfunction, args=(Qnorm))
mppool.close()
mppool.join()
mppool=multiprocessing.Pool(ncpus)
for Qnorm in QnormAll:
mppool.apply_async(costlyfunction, args=(Qnorm))
mppool.close()
mppool.join()