2017-07-05 17 views
0

私はmain.pyファイルを持っています。このファイルは、multiprocessingを使用してfunction.pyという別のファイルを実行します。 2番目はthreadingを使用してnumpy arrayのすべてのコンポーネントに関数fを適用します。 function.pyは、file.txtというファイルを読み取って、fのデータを読み取り、それを消去します(空のファイルを書き込む)。ファイルfile.txtfunction.pyにロックする必要がありますか?main.pyから実行してfunction.pyを実行し、file.txtを読み書きすると、Nプロセスが発生する問題を避ける必要がありますか?もしそうなら、それはどうやって行えますか?マルチプロセッシングとマルチスレッドを使用するときにファイルをロックする - Python

最後にsemaphoreで取得します。

答えて

0

はい、何らかの方法でロックする必要があります。 複数のプロセスがファイルを読み込んでいるのは、読み込み中であれば問題ありません。ファイルに何かが書き込まれるとすぐに、読み書きが望ましい順序で行われることを確認する必要があります。

アトミックに作成されたロックファイルを使用してロックを行うことができます。プロセスがロックファイルを正常に作成すると、テキストファイルへのアクセス権が得られます。テキストファイルで処理が完了すると、ロックファイルが削除されます。これにより、特定の時間に1つのプロセスだけがテキストファイルにアクセスできるようになります。

+0

プログラム内でプロセスを同期させて、一度に1つのプロセスだけがファイルが編集されたコードにアクセスするようにすることもできます。 – Andreas

関連する問題