python打印进度条starting...done_修复python多处理中的多进度条跳转(tqdm)

当我把尺寸设为30码时,我一点也不跳。也许你有更多的处理器,可以让更多的工人运行。在

但是,如果n变大,您将开始看到跳跃,因为chunksize的性质。在

p.map将把你的输入分成chunksize并给每个进程一个chunk。所以当n变大,你的chunksize也会变大,你的。。。。。。。是的position(pos=n+1)!在

注意:尽管map保留了返回结果的顺序。其计算顺序是任意的。在

随着n的增长,我建议使用processor id作为每个进程查看进度的位置。在from time import sleep

import random

from tqdm import tqdm

from multiprocessing import Pool, freeze_support, RLock

from multiprocessing import current_process

def progresser(n):

text = f'#{n}'

sampling_counts = 10

current = current_process()

pos = current._identity[0]-1

with tqdm(total=sampling_counts, desc=text, position=pos) as pbar:

for i in range(sampling_counts):

sleep(random.uniform(0, 1))

pbar.update(1)

if __name__ == '__main__':

freeze_support()

L = list(range(30)) # works until 23, breaks starting at 24

# p = Pool(processes=None,

# initargs=(RLock(),), initializer=tqdm.set_lock

# )

with Pool(initializer=tqdm.set_lock, initargs=(tqdm.get_lock(),)) as p:

p.map(progresser, L)

print('\n' * (len(L) + 1))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值