Pythonで大きなファイルを扱う際のメモリオーバーフロー対策

大容量ファイルの処理時にメモリ不足を回避するには、次の方法があります。

  1. ファイルオブジェクトのreadline()メソッドを使い、ファイル内容を行ごとに取り込む逐次読み込みを行い、ファイル全体を一度に読み込むのではなく、逐次的に読み込んでいくこと。
with open('filename.txt', 'r') as file:
for line in file:
# 处理每一行的数据
  1. 読み込み処理をブロック化:ファイルオブジェクトのread()メソッドを使ってファイル内容をブロックごとに読み込み、データを1ブロックずつ処理する。これにより、ファイルを小さなブロックに分割してメモリの使用を削減できる。
with open('filename.txt', 'r') as file:
chunk_size = 1024  # 设置每次读取的块大小
while True:
data = file.read(chunk_size)
if not data:
break
# 处理当前块的数据
  1. ファイル読み込み処理をジェネレータ関数にカプセル化すると、メモリ使用量が減ります。ジェネレータ関数はyieldキーワードを使用して、データをすべてメモリに一度に格納するのではなく、1行ずつ生成します。
def read_file(filename):
with open(filename, 'r') as file:
for line in file:
yield line
for data in read_file('filename.txt'):
# 处理每一行的数据
  1. データが構造化されている場合は、pandasライブラリを使用できます。pandasは大きなデータセットを扱うための機能を提供し、ファイルをチャンク単位で読み取って処理することができます。
import pandas as pd
chunk_size = 1000  # 设置每次读取的块大小
for chunk in pd.read_csv('filename.csv', chunksize=chunk_size):
# 处理当前块的数据

これらの方法によって、大きなファイルを効果的に処理してメモリオーバーフローの問題を回避することができます。

コメントを残す 0

Your email address will not be published. Required fields are marked *


广告
広告は10秒後に閉じます。
bannerAds