1

重複の可能性:
Pythonのfile.flush()は正確に何をしていますか?

フラッシュメソッドを呼び出すと多くのIO操作が必要になり、余分な時間がかかることがわかりました。

スクリプトでフラッシュを削除しても、ファイルはすぐには更新されないことを知っています。

それで、私はファイルを書いているだけで、読んでいないのではないかと思いますが、スクリプトからフラッシュを取り出すことによる他の副作用はありますか?

4

1 に答える 1

0

副作用?私はあなたが何を意味するのか正確には理解していませんが、とにかく前にそれをさせてください。

ファイル操作の場合、Pythonは、特に設定しない限り、オペレーティングシステムのデフォルトのバッファリングを使用します。バッファサイズ、バッファなし、またはラインバッファを指定できます。したがって、常に使用しているflush場合は常にIOが実行され、大量のデータをフラッシュしている場合(つまり、バッファーが大きい場合)、他の実行中のプログラムの処理が遅くなり、IOを待機することになります。

高速で頻繁なIO操作は、ハードディスクの寿命には適していません。ディスククラッシュの変化が大きくなります。

通常、私が従うパターンは、ファイルオブジェクトへのすべての書き込みが完了した後、ファイルを閉じる前に最後にフラッシュが実行されることです。

あなたが考えるべきことは、あなたがそれを書いているのと同じファイルから読んでいる他のスレッドやプログラムがありますか?この場合、問題が発生する可能性があります。ここでは、破損したファイルが発生する可能性が非常に高くなります。ファイルを永続データストアとして使用することを検討している場合。それからそれをするのは間違った方法です。ファイルをデータストアとして使用する代わりに、永続DB(mysqlやsqliteなど)の使用を検討してみませんか。

于 2012-12-12T03:38:44.943 に答える