Starmap と tqdm の組み合わせ? 質問する

Starmap と tqdm の組み合わせ? 質問する

次のように並列処理を行っています。

with mp.Pool(8) as tmpPool:
        results = tmpPool.starmap(my_function, inputs)

入力は次のようになります: [(1,0.2312),(5,0.52) ...] つまり、int と float のタプルです。

コードはうまく実行されますが、次のように、たとえば imap メソッドで実行できるような、読み込みバー (tqdm) の周囲にコードをラップすることはできないようです。

tqdm.tqdm(mp.imap(some_function,some_inputs))

これをスターマップでも実行できますか?

ありがとう!

ベストアンサー1

最も簡単な方法は、マッピング関数ではなく、入力の周りに tqdm() を適用することです。例:

inputs = zip(param1, param2, param3)
with mp.Pool(8) as pool:
    results = pool.starmap(my_function, tqdm.tqdm(inputs, total=len(param1)))

バーはmy_function、返されるときではなく、呼び出されたときに更新されることに注意してください。その区別が重要な場合は、他の回答で示唆されているように、starmap を書き直すことを検討できます。それ以外の場合は、これがシンプルで効率的な代替手段です。

おすすめ記事