from multiprocessing import Pool
    with Pool(processes=5) as p:
        p.starmap(name_of_function, all_inputs)

我有一段类似上面的代码,它并行执行一个函数。假设all_inputs有10000个元素,我想知道当前正在执行哪个元素,例如10000个元素中的100个…有没有办法得到那个索引?

最佳答案

multiprocessing.Pool中的工作进程是Process的实例,它保持an internal counter以标识自身,您可以将此计数器与OS process id一起使用:

import os
from multiprocessing import current_process, Pool


def x(a):
    p = current_process()
    print('process counter:', p._identity[0], 'pid:', os.getpid())


if __name__ == '__main__':
    with Pool(2) as p:
        r = p.map(x, range(4))
    p.join()

产量:
process counter: 1 pid: 29443
process counter: 2 pid: 29444
process counter: 2 pid: 29444
process counter: 1 pid: 29443

关于python - 获取python多处理中当前正在执行的输入的索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48217449/

10-12 00:33
查看更多