python使用多进程时显示进度条


1 注意事项

  • 使用map将无法显示进度,从0直接到100没有过程,使用imap可展示遍历过程。
  • 不加list()无法正常显示进度条

方法 1

from multiprocessing import Pool
import tqdm
import time

def mypow(x):
    square = x * x
    time.sleep(0.1)
    return square 

with Pool(10) as p:
    r = list(tqdm.tqdm(p.imap(mypow, range(30)), total=30, desc="mypow"))

方法 2

from multiprocessing import Pool
from progressbar import ProgressBar,Bar,ETA
from time import sleep

def myadd(n):
    add = n + n
    time.sleep(0.1)
    return add

feed = range(256)
with Pool(10) as p:
    widgets = [Bar(left="myadd: "),ETA()]
    pbar = ProgressBar(widgets=widgets,maxval=len(feed))
    res = list(pbar(p.imap(myadd,feed)))