Python3環境にて、並列処理の時間短縮を試みて色々テストしています。
ThreadPoolExecutorは使えたのですが、"ThreadPoolExecutor"の部分を
そのまま"ProcessPoolExecutor"に書き換えたら、うまく動作しなくなりました。
調べても構文のどこに間違いがあるかわからず、エラーも特に出ないため、不具合箇所特定に至りません。
アドバイス頂けますと幸いです。
尚、呼び出す関数は長いため省略して、呼び出し部分だけ記載しています。
■ 動作しない問題があるプログラム
if __name__ == '__main__': try: max_workers = 2 executor = concurrent.futures.ProcessPoolExecutor(max_workers=max_workers) try: with open("search_list.csv", encoding="utf-8") as f: for row in csv.reader(f): try: executor.submit(get_website, row) except: pass except: print('Error: ファイルが見つからないよ') pass except: pass
■ 動作したプログラム(修正前)
if __name__ == '__main__': try: max_workers = 2 executor = concurrent.futures.ThreadPoolExecutor(max_workers=max_workers) try: with open("search_list.csv", encoding="utf-8") as f: for row in csv.reader(f): try: executor.submit(get_website, row) except: pass except: print('Error: ファイルが見つからないよ') pass except: pass
> うまく動作しなくなりました
> エラーも特に出ないため
「うまく動作しな」いとは具体的にはどういう状況でしょうか?
エラーは本当に発生していませんか?(passしているからではなくてですか?)
お返事ありがとうございます。
全ての処理がスキップされてしまいます。
また、例外処理のpassの部分を消去し、
except Exception as e:
print(e)
と、エラーが出力されるように書き換えてみましたが、特にエラーは出ませんでした。
import部分も含め他の人が丸ごと再現できる最小限のプログラムを公開できますか?
もし「公開するとまずいデータ」がないと走らせられないプログラム、であれば、そのデータをダミーのデーターー"ABCDEFG"やnp.zeors((10,10))で適宜差し替えてください。
対象のデータはCSVのようですので、メモ帳で開いて以下のようにプレーンテキストを数行くらい抜き出して張り付けられれば動作確認できそうですね。
```Plaintext
A,1,2,3
B,4,5,6
C,7,8,9
```
あなたの回答
tips
プレビュー