tmori’s blog

公開メモ帳くらいの感覚で書いています。技術系多め。日常少なめ。

【Python】[Errno 32] Broken pipe【PyTroch】

pytorchで [Errno 32] Broken pipe の解消方法について

実行環境

エラー発生原因

このエラーはwindows+torch.utils.data.DataLoaderのnum_workers>1 + IPythonの書き方で発生してるようです。

同じコードをcentosで実行すると正常に動作するのでwindows動作でのバグか仕様みたいです。 dataloaderのnum_workersを複数にしてマルチスレッドで処理するときにエラーが発生してるみたいです。

pytorch.org

解消方法

def main(): の中に処理を記述すれば正常に動作します。

def main():
    # ここにpytorchのコードを記述
    

if __name__ == "__main__":
    main()

僕の場合.ipynbで書いたものを無理やり.pyで実行したら案の定エラーが発生。

結論

良い子のみんなはmain関数をちゃんと作ろうね!!

Python 「if __name__ == ‘__main__’:」の意味 - Qiita