2017-12-08 9 views
0

read,writeおよびdeleteのような操作をディレクトリ内のファイルに実行するPython scriptがあります。これらの操作を実行する前に、ファイルのリストを取得するためにos.listdirが実行されます。ファイルがランダムに選択され、操作が実行されます。複数のプロセスが同じディレクトリ内のファイルを読み書きしようとするときの競合条件

しかし、私はスクリプトの複数のインスタンスを実行する必要があります。競争の可能性があります。ファイルがインスタンスによって削除される可能性がありますが、別のインスタンスはそれを読み取ろうとします。

この問題を解決するにはどうすればよいでしょうか?

答えて

0

まず、重要な領域を特定する必要があります。 次に、何らかのセマフォでそれらを保護する必要があります。これは、オペレーティングシステムによって提供されるロックファイルまたは実際のセマフォである可能性があります。

実際の課題は、クリティカルな領域をできるだけ小さく(タイムリーに)保つことです。

スクリプト自体を保護する必要があるため、1つのセマフォで処理する必要があります。しかし、複数のセマフォが必要な場合は、一度に複数のセマフォを使用しないでください。また、潜在的なデッドロックを生成しないように十分注意してください。

0

正しい方法は、正しい動作を決定することです。これらはファイル管理とデータベース管理の古典的な問題であり、最初に明確な方針が必要です。

関連する問題