3

現在、非常に大きな (> 10GB) ファイルを処理する python スクリプトを作成しています。ファイル全体をメモリにロードすることはオプションではないため、現在、1 行ずつ読み取って処理しています。

for line in f:
....

スクリプトが完了すると、かなり頻繁に実行されるので、そのような読み取りがディスクの寿命にどのような影響を与えるかを考え始めています。

スクリプトは実際に1 行ずつ読み取るのでしょうか、それとも OS による何らかのバッファリングが発生しているのでしょうか。そうでない場合、何らかの中間バッファーを自分で実装する必要がありますか? 多くの場合、実際に有害なディスクにヒットすることはありますか? BitTorrent がディスクをすぐに消耗させるという記事を読んだことを覚えています。これは、より大きなデータ チャンクを操作するのではなく、まさにそのようなビット単位の読み取り/書き込みが原因でした。

テスト環境で HDD と SSD の両方を使用しているため、両方のシステムで回答が興味深いでしょう。

4

1 に答える 1

7

OS と Python はどちらも、パフォーマンス上の理由から、バッファーを使用してより大きなチャンクでデータを読み取ります。Python からファイルを 1 行ずつ読み取っても、ディスクに大きな影響はありません。

具体的には、Python は行セパレーターを見つけるために事前にスキャンしないと個々の行を提供できないため、チャンクを読み取り、個々の行を解析し、次のセットを見つけるために別のチャンクを読み取る必要があるまで、各反復でバッファーから行を取得します。行。OS はバッファ キャッシュを使用して、一般的に I/O を高速化します。

于 2016-02-15T10:10:12.257 に答える