Python の File.flush() メソッドは実際に何をしているのですか?
Python のドキュメントには、flush() は必ずしも必要ではないと記載されていますファイルデータをディスクに書き込みます。これは、flush() がデータをディスクに強制的に送信すると予想されるため、意図した目的と矛盾しているように見えるかもしれません。
バッファリング レベル
flush() を理解するには、次のようにします。 2 つのバッファリング レベルを考慮する必要があります:
flush() および内部バッファ
flush() を呼び出すと、内部バッファーからオペレーティング システムによって管理されるファイル オブジェクトにデータのみが書き込まれます。これは、データがまだディスクに書き込まれていない可能性があることを意味します。
os.fsync() とオペレーティング システム バッファ
データがディスクに確実に書き込まれるようにするには、次のようにします。 flash() を呼び出した後、os.fsync() メソッドを使用する必要があります。 os.fsync() は、オペレーティング システムのバッファからストレージ デバイスにデータを書き込み、耐久性を確保します。
flush() と fsync() を使用する場合
ほとんどの場合この場合、Python のデフォルトの動作では、バッファーがいっぱいになったとき、またはファイルが閉じられたときにデータをディスクに書き込むため、flush() と fsync() は必要ありません。ただし、信頼性とデータ整合性の目的で、データがすぐにディスクに書き込まれることが重要なシナリオでは役立つ可能性があります。
補足
キャッシュされたディスクには、さらに多くのバッファ層が関係する可能性があります。 flash() と fsync() もこれらのバッファを処理すると想定されていますが、確認のためにさらなる研究が必要になる可能性があります。
以上がPython の File.flush() メソッドは内部で何をしているのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。