次のように並列処理を行っています。
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 を書き直すことを検討できます。それ以外の場合は、これがシンプルで効率的な代替手段です。