[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
2022-07-10 23:34:09
質問
マルチプロセッシングの Pool セットタスクに成功したスクリプトがある。
imap_unordered()
を呼び出します。
p = multiprocessing.Pool()
rs = p.imap_unordered(do_work, xrange(num_tasks))
p.close() # No more work
p.join() # Wait for completion
しかし、私の
num_tasks
は25万程度なので
join()
はメインスレッドを10秒ほどロックするので、メインプロセスがロックされていないことを示すために、コマンドラインにインクリメンタルにエコーアウトできるようにしたいのです。何かこんな感じ。
p = multiprocessing.Pool()
rs = p.imap_unordered(do_work, xrange(num_tasks))
p.close() # No more work
while (True):
remaining = rs.tasks_remaining() # How many of the map call haven't been done yet?
if (remaining == 0): break # Jump out of while loop
print("Waiting for", remaining, "tasks to complete...")
time.sleep(2)
結果オブジェクトやプール自体に、残りのタスク数を示すメソッドはないのでしょうか?私は
multiprocessing.Value
オブジェクトをカウンタとして使ってみました (
do_work
を呼び出します。
counter.value += 1
アクションを呼び出します) が、カウンターは全体の値の85%までしか上がらず、インクリメントが停止します。
どのように解決するのですか?
結果セットのプライベート属性にアクセスする必要はありません。
from __future__ import division
import sys
for i, _ in enumerate(p.imap_unordered(do_work, xrange(num_tasks)), 1):
sys.stderr.write('\rdone {0:%}'.format(i/num_tasks))
関連
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] Python 3 の "python -m SimpleHTTPServer" に相当するものは何ですか?
-
[解決済み] print関数の出力をフラッシュする(pythonの出力をバッファリング解除する)にはどうすればよいですか?
-
[解決済み] Pythonでパスから拡張子なしでファイル名を取得する方法は?
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み] マルチプロセシングプールに似たスレッディングプール?
-
[解決済み] ネストした辞書の項目からpandasのDataFrameを構築する
-
[解決済み] Pythonを使ってすべてのASCII文字のリストを得るにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Spyderを仮想環境で動作させるには?
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Python で、クラスオブジェクトを dict にキャストするにはどうしたらいいですか?
-
[解決済み] Pythonで文字列が数字で始まるかどうかを判断するには?
-
[解決済み] Pythonを使ってすべてのASCII文字のリストを得るにはどうすればよいですか?
-
[解決済み] sqlalchemy の declarative ORM 拡張機能で複数カラムのインデックスを使用する場合