使用Process.Pool跟踪进度

时间:2015-02-10 20:42:03

标签: python multiprocessing

for循环中,通过执行以下操作很容易跟踪进度:

total_num = 1000
for num, url in enumerate(urls):
    print '%s / %s' (num+1, total_num)
    # do something

如何使用Pool跟踪进度?

# input data has 4M items
pool = Pool(parallel_workers)
pool.map(run_item, input_data)

2 个答案:

答案 0 :(得分:1)

查看此问题的答案。我想这就是你想要的。

Python multiprocessing - tracking the process of pool.map operation

基本上,您应该使用迭代的map或异步的map

答案 1 :(得分:0)

一个非常基本的近似方法是拥有一个全局变量,然后确定整个进度的大小。这是一个例子:

global progress
progress = set()

def run_item(input_data):
    progress.add(url)
    print len(progress) * parallel_workers