Python多線程pool.map展示進度條方法


關聯

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)))

注意

  1. 使用map將無法顯示進度,從0直接到100沒有過程,使用imap可展示遍歷過程。
  2. 不加if __name__ == "__main__"會無限報錯
  3. 不加list()無法正常顯示進度條

參考

How to update single progress bar in multiprocessing map()?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM