关联
Multiprocessing : use tqdm to display a progress bar
方法
使用Pool多线程并行处理任务并返回结果
需要对进度条进行特殊处理
tqdm
方法
from multiprocessing import Pool
import tqdm
import time
def _foo(my_number):
square = my_number * my_number
time.sleep(1)
return square
if __name__ == '__main__':
with Pool(2) as p:
r = list(tqdm.tqdm(p.imap(_foo, range(30)), total=30))
progressbar
方法
from multiprocessing import Pool
from progress bar import ProgressBar,Bar,ETA
from time import sleep
def fcn(n):
sleep(0.1)
return n*n
feed = range(256)
if __name__ == "__main__":
with Pool(10) as p:
widgets = [Bar(),ETA()]
pbar = ProgressBar(widgets=widgets,maxval=len(feed))
return = list(pbar(p.imap(fcn,feed)))
注意
- 使用
map
将无法显示进度,从0直接到100没有过程,使用imap
可展示遍历过程。 - 不加
if __name__ == "__main__"
会无限报错 - 不加
list()
无法正常显示进度条