ホームページ  >  記事  >  バックエンド開発  >  Python でファイルを読み取る 4 つの異なる方法の比較

Python でファイルを読み取る 4 つの異なる方法の比較

黄舟
黄舟オリジナル
2017-05-22 23:23:202113ブラウズ

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 つの方法が依然として最適です。ただし、具体的な状況はマシンのパフォーマンスとデータ処理の複雑さに依存します。

【関連する推奨事項】

1. ファイルの後のn行を読み取るPythonコード例

2. Pythonを使用してファイルアプレットを読み取る

以上がPython でファイルを読み取る 4 つの異なる方法の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。