相关疑难解决方法(0)

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 …
Run Code Online (Sandbox Code Playgroud)

python pool multiprocessing

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

multiprocessing ×1

pool ×1

python ×1