我有一个函数执行一些模拟,并且 返回一个字符串格式的数组。Python多处理 - 跟踪pool.map操作的过程
我想运行 变化的输入参数值,超过10000个可能的输入值, 的仿真(功能),并将结果写入单个文件。
我正在使用多处理,特别是pool.map函数 并行运行模拟。
由于运行仿真功能10000次以上的整个过程需要很长时间,我真的很想跟踪整个操作过程。
我认为我当前代码中的问题是,pool.map运行10000次函数,在这些操作过程中没有任何进程跟踪。一旦并行处理完成10000次仿真(可能需要数小时至数天),那么当10000个仿真结果保存到文件时,我会继续跟踪。因此,这并不是真正跟踪pool.map操作的处理。
是否有一个容易修复我的代码,将允许进程跟踪?
def simFunction(input):
# Does some simulation and outputs simResult
return str(simResult)
# Parallel processing
inputs = np.arange(0,10000,1)
if __name__ == "__main__":
numCores = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes = numCores)
t = pool.map(simFunction, inputs)
with open('results.txt','w') as out:
print("Starting to simulate " + str(len(inputs)) + " input values...")
counter = 0
for i in t:
out.write(i + '\n')
counter = counter + 1
if counter%100==0:
print(str(counter) + " of " + str(len(inputs)) + " input values simulated")
print('Finished!!!!')
非常感谢你! – user32147 2015-02-26 17:08:45