[解決済み] マルチプロセッシング : tqdm を使ってプログレスバーを表示する
2022-04-27 02:16:47
質問
私のコードをより "pythonic" で速くするために、私は "multiprocessing" と map 関数を使用して a) 関数と b) 反復の範囲を送信しています。
移植された解決策(すなわち、範囲 tqdm.tqdm(range(0, 30)) で直接 tqdm を呼び出す)は、マルチプロセシングでは動作しません(以下のコードで定式化されている通り)。
プログレスバーは0から100%まで表示されますが(pythonがコードを読むとき?)、map関数の実際の進行状況を示すものではありません。
map関数がどの段階にあるのかを示すプログレスバーを表示するには?
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__':
p = Pool(2)
r = p.map(_foo, tqdm.tqdm(range(0, 30)))
p.close()
p.join()
どんなヘルプや提案も歓迎です...
解決方法は?
解決策発見 : 注意! マルチプロセッシングのため、推定時間(ループごとの繰り返し、合計時間など)が不安定になる可能性があるが、プログレスバーは完全に機能する。
注:Pool用コンテキスト・マネージャーはPythonバージョン3.3から利用可能です。
from multiprocessing import Pool
import time
from tqdm import *
def _foo(my_number):
square = my_number * my_number
time.sleep(1)
return square
if __name__ == '__main__':
with Pool(processes=2) as p:
max_ = 30
with tqdm(total=max_) as pbar:
for i, _ in enumerate(p.imap_unordered(_foo, range(0, max_))):
pbar.update()
関連
-
Pythonによるjieba分割ライブラリ
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Python LeNetネットワークの説明とpytorchでの実装
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない
-
[解決済み] マルチプロセシングpool.mapを複数の引数で使用する方法
-
[解決済み] Python プログレスバー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
Pythonコンテナのための組み込み汎用関数操作
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] Pythonの単純なループを並列化するには?