クラスターシステム上でPythonから並行して実行されているいくつかのスレッドがあります。各Pythonスレッドはディレクトリに出力しますmydir
。各スクリプトは、出力する前に、mydirが存在するかどうかを確認し、存在しない場合は作成します。
if not os.path.isdir(mydir):
os.makedirs(mydir)
ただし、これによりエラーが発生します。
os.makedirs(self.log_dir)
File "/usr/lib/python2.6/os.py", line 157, in makedirs
mkdir(name,mode)
OSError: [Errno 17] File exists
競合状態が原因である可能性があります。この場合、一方のジョブがdirを作成してから、もう一方のジョブがそれに到達します。これは可能ですか?もしそうなら、このエラーをどのように回避できますか?
競合状態かどうかわからないので、Pythonの他の問題がこの奇妙なエラーを引き起こす可能性があるかどうか疑問に思っていました。