要在pool.apply_async中添加进度条,我们可以使用tqdm库来实现。tqdm是一个用于在循环中显示进度条的库。

首先,我们需要导入所需的库:

from multiprocessing import Pool
from tqdm import tqdm

然后,我们定义一个用于跟踪进度的函数。这个函数将包装我们的apply_async调用,并使用tqdm来显示进度条。

def track_progress(func, iterable):
    pbar = tqdm(total=len(iterable))

    def update(*args):
        pbar.update()

    pool = Pool()
    for item in iterable:
        pool.apply_async(func, args=(item,), callback=update)
    
    pool.close()
    pool.join()
    pbar.close()

在这个函数中,我们创建了一个tqdm对象pbar,并将其总数设置为输入iterable的长度。然后,我们定义了一个内部函数update,它会在每次任务完成时调用tqdmupdate方法来更新进度条。

接下来,我们创建一个Pool对象,并使用apply_async来异步执行任务。在每次任务完成时,我们调用update函数来更新进度条。

最后,我们关闭Pool并等待所有任务完成,然后关闭进度条。

要使用这个跟踪进度的函数,我们只需将要执行的函数和输入迭代器作为参数传递给它:

def my_function(item):
    # 执行任务的代码

input_data = range(10)
track_progress(my_function, input_data)

这样,我们将在Pool.apply_async的执行过程中看到一个进度条

python poolapply_async添加进度条

原文地址: https://www.cveoy.top/t/topic/h6pE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录