python 如何在这里添加tqdm?

rxztt3cl  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(151)

我该如何在多处理for循环中添加tqdm,也就是说,我想把urls Package 成tqdm()

jobs = []
urls = pd.read_csv(dataset, header=None).to_numpy().flatten()
for url in urls:
    job = pool.apply_async(worker, (url, q))
    jobs.append(job)

for job in jobs:
    job.get()

pool.close()
pool.join()

GitHub上的建议解决方案如下:

pbar = tqdm(total=100)
def update(*a):
    pbar.update()
    # tqdm.write(str(a))
for i in range(pbar.total):
    pool.apply_async(myfunc, args=(i,), callback=update)
pool.close()
pool.join()

但是我的可迭代对象是一个URL列表,而不是像上面那样的一个范围。我如何将上面的解决方案转换为 my for循环?

gtlvzcf8

gtlvzcf81#

您可以使用Joblib中的ParallelDelayed,并按以下方式使用tqdm:

from multiprocessing import cpu_count
from joblib import Parallel, delayed
def process_urls(urls,i):

   #define your function here

调用函数时使用:

urls = pd.read_csv(dataset, header=None).to_numpy().flatten()
Parallel(n_jobs=cpu_count(), prefer='processes')(delayed(process_urls)(urls, i) for i in tqdm(range(len(urls.axes[0]))))

相关问题