Pythonテキスト処理は、主に Pythonファイルの読み取り方法の比較に関する関連情報を紹介します。それを理解して学ぶために、必要な友達は来て、以下を見てください。
はじめに
Python にはさまざまなファイルの読み取り方法があることは誰もが知っていますが、大きなファイルを読み取る必要がある場合、読み取り方法が異なれば効果も異なります。以下に詳しい紹介を見てみましょう。
シナリオ
2.9Gの大きなファイルを一行ずつ読み込む
CPU i7 6820HQ
RAM 32G
各行のメソッド
読み取りと1 つの分割string操作を実行します
次のメソッドはすべて with...as メソッドを使用してファイルを開きます。
with ステートメントは、使用後のファイルの自動クローズ、スレッド内のロックの自動取得と解放など、使用中に例外が発生したかどうかに関係なく、必要な「クリーニング」操作が実行され、リソースが解放されるようにリソースにアクセスするのに適しています。 、など。
方法 1 ファイルを読み取る最も一般的な方法
with open(file, 'r') as fh: for line in fh.readlines(): line.split("|")
実行結果: 15.4346568584 秒かかりました
システム モニターには、メモリが突然 4.8G から 8.4G に急増したことが示されています (fh.readlines()) will 読み取られたデータのすべての行はメモリに保存されます。この方法は小さなファイルに適しています。
方法2
with open(file, 'r') as fh: line = fh.readline() while line: line.split("|")
実行結果: 22.3531990051秒かかりました
メモリ内のデータは1行しかアクセスされないため、メモリにはほとんど変化はありませんが、時間は明らかに長くなります。前回は、データをさらに処理するのは効率的ではないと言いました。
方法3
with open(file) as fh: for line in fh: line.split("|")
実行結果: 13.9956979752秒かかりました
メモリはほとんど変化がなく、方法2よりも速度が速くなります。 fh の
行は、ファイル オブジェクト fh を反復可能として扱い、バッファリングされた IO とメモリ管理を自動的に使用するため、大きなファイルについて心配する必要はありません。これは非常に Python 的な方法です。
方法4 fileinputモジュール
for line in fileinput.input(file): line.split("|")
実行結果: 26.1103110313秒かかりました
メモリは200〜300MB増加し、速度は上記で最も遅くなります。
概要
上記の方法は参照のみを目的としており、大きなファイルを読み取るために認識されている 3 つの方法が依然として最適です。ただし、具体的な状況はマシンのパフォーマンスとデータ処理の複雑さに依存します。
【関連する推奨事項】
以上がPython でファイルを読み取る 4 つの異なる方法の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。