0
私は、複数のプロセスを起動してprogressbar2モジュールを使用して進捗状況を追跡するためにさまざまな操作を実行する一般的な機能を持っています。プログレスバーがハングアップして機能が停止することがあります。私はなぜ、私が進行状況バーの更新を削除すると、プロセスが終了し、移動するので、問題がwhileループにあるように見える理由を理解できないようです。 whileループを構築するより良い方法はありますか?Pythonのマルチプロセッシングとプログレスバーの機能がハングアップすることがある
def runMultiProgress(function, inputList, cpus):
from progressbar import ProgressBar, Percentage, ETA
from time import sleep
#setup pool
p = multiprocessing.Pool(cpus)
#setup progress bar
widgets = [' Progress: ', Percentage(),' || ', ETA()]
pbar = ProgressBar(widgets=widgets, term_width=30, maxval=len(inputList)).start()
#setup results and split over cpus
results = []
r = [p.apply_async(function, (x,), callback=results.append) for x in inputList]
#refresh pbar every 5 seconds
while len(results) != len(inputList):
pbar.update(len(results))
sleep(5)
pbar.finish()
p.close()
p.join()
UPDATE:私の情報源を引用し、このマルチプロセッシング+プログレスバーがここに@ジュリアン・tourilleの答えからです:Show the progress of a Python multiprocessing pool map call?