關聯
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()
無法正常顯示進度條