gpt4 book ai didi

python - TQDM 和多处理 - python

转载 作者:行者123 更新时间:2023-12-05 08:48:15 29 4
gpt4 key购买 nike

我想在每个进程中使用 4 个 python 进程和 tqdm 进度条:

 66%|███████████████████████████▌              | 80/122 [00:44<00:23,  1.79it/s]
35%|██████████████▉ | 18/52 [00:08<00:16, 2.01it/s]
26%|█████████▋ | 61/108 [00:44<00:34, 1.38it/s]
56%|███████████████████████▋ | 61/108 [00:44<00:34, 1.38it/s]

所以它们都是 4 个同时显示和更新。我怎样才能做到这一点?

最佳答案

import multiprocessing
import random
import time

import tqdm


def task(position, lock):
total_iterations = 5

with lock:
bar = tqdm.tqdm(
desc=f'Position {position}',
total=total_iterations,
position=position,
leave=False
)

for _ in range(total_iterations):
time.sleep(random.uniform(0.5, 1))
with lock:
bar.update(1)

with lock:
bar.close()


if __name__ == '__main__':
lock = multiprocessing.Manager().Lock()

with multiprocessing.Pool(4) as pool:
for position in range(4):
pool.apply_async(task, args = (position + 1, lock))

pool.close()
pool.join()

解释

  • 使用 tqdm 的位置标志(如评论中所建议的),我设置了行号来打印每个柱。
  • 我使用 Lock 实例来防止多个进程同时写入 stdout。

关于python - TQDM 和多处理 - python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66208601/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com