Python 2.7 で大きな CSV ファイルを読み取る
Python 2.7 で巨大な CSV ファイルを読み取るという課題を解決すると、特にファイルの場合にメモリの問題が発生する可能性があります。 300,000 行を超えています。このハードルを乗り越えるには、ファイル全体をメモリに読み込まないようにすることが重要です。
メモリ管理テクニック
ジェネレーターを使用すると、メモリ効率の高い処理が可能になります。リスト内のすべての行を蓄積する代わりに、各行を個別に生成します。 getstuff 関数のジェネレーターに代表されるこのアプローチは、メモリ消費を大幅に削減します。
さらに、itertools モジュールの Dropwhile 関数や takewhile 関数などの最適化を検討してください。これらは、無関係な行をスキップすることで効率的なフィルタリングを促進し、メモリをさらに節約します。
パフォーマンスの最適化
メモリ管理を超えて、パフォーマンスを向上させるには、不必要な操作を最小限に抑えることが必要です。 getdata 関数は、getstuff ジェネレーターを直接反復処理して、不要な中間リストを排除する必要があります。
使用例
ジェネレーターを使用してコードを再加工すると、より効率的なソリューションが得られます。
def getstuff(filename, criterion): ... # Same generator code as above def getdata(filename, criteria): ... # Same generator code as above # Process rows directly for row in getdata(somefilename, sequence_of_criteria): ... # Process the current row
このコードは一度に 1 行を効果的に処理するため、膨大な CSV ファイルであってもメモリ使用量が大幅に削減され、パフォーマンスが向上します。
以上がPython 2.7 で大きな CSV ファイルを効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。