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/