.NET版にはsimilar questionがありますが、私は特にPython os.walk
関数について尋ねています。私は最新のPython 3を使用しています。os.walkによってスキャンされているファイルが実行中に変更された場合はどうなりますか?
ファイルがたくさんあるディレクトリがあるとします。私は各ファイルにしばらく時間がかかりますが、root
ディレクトリが別のプロセスによって中間ループに変更されるのに十分な時間がかかります。ここでは明瞭のために、たとえば次のようになります。
for root, dirs, files in os.walk(rootDirectory):
for file in files:
doAReallyLongBlockingCall(file)
はos.walk
、このような変更を検出しませんか?ファイルを追加すると、それはos.walk
で見つかるのでしょうか?
それを試して、マルチプロセッシングやスレッドを使用して、ファイルを作成してみてください1つのプロセス/スレッドを持つツリー内にあり、他のプロセス/スレッドと一緒にツリーを歩きます。何が起こった?いくつかのランドウ 'time.sleep()'を投げてください。それらの2つが完了した後にツリーを歩いて、結果を比較してください。 – wwii