我有一个函数执行一些模拟并返回一个字符串格式的数组.
我想运行模拟(函数)来改变输入参数值,超过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 …Run Code Online (Sandbox Code Playgroud)