python poolapply_async添加进度条
要在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,它会在每次任务完成时调用tqdm的update方法来更新进度条。
接下来,我们创建一个Pool对象,并使用apply_async来异步执行任务。在每次任务完成时,我们调用update函数来更新进度条。
最后,我们关闭Pool并等待所有任务完成,然后关闭进度条。
要使用这个跟踪进度的函数,我们只需将要执行的函数和输入迭代器作为参数传递给它:
def my_function(item):
# 执行任务的代码
input_data = range(10)
track_progress(my_function, input_data)
这样,我们将在Pool.apply_async的执行过程中看到一个进度条
原文地址: https://www.cveoy.top/t/topic/h6pE 著作权归作者所有。请勿转载和采集!