Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Membaca Fail CSV Besar dengan Cekap dalam Python 2.7?

Bagaimanakah Saya Boleh Membaca Fail CSV Besar dengan Cekap dalam Python 2.7?

Barbara Streisand
Barbara Streisandasal
2024-11-19 16:42:03170semak imbas

How Can I Efficiently Read Large CSV Files in Python 2.7?

Membaca Fail CSV Besar dengan Python 2.7

Menavigasi cabaran membaca fail CSV yang besar dengan Python 2.7 boleh menimbulkan masalah ingatan, terutamanya dengan fail melebihi 300,000 baris. Untuk mengatasi halangan ini, adalah penting untuk mengelak daripada membaca keseluruhan fail ke dalam memori.

Teknik Pengurusan Memori

Menggunakan penjana membolehkan pemprosesan yang cekap memori. Daripada mengumpul semua baris dalam senarai, hasilkan setiap baris secara individu. Pendekatan ini, yang dicontohkan oleh penjana fungsi getstuff, mengurangkan penggunaan memori dengan ketara.

Selain itu, pertimbangkan pengoptimuman seperti fungsi dropwhile dan takewhile daripada modul itertools. Ini memudahkan penapisan yang cekap dengan melangkau baris yang tidak berkaitan, seterusnya menjimatkan memori.

Pengoptimuman Prestasi

Di luar pengurusan memori, meningkatkan prestasi melibatkan meminimumkan operasi yang tidak perlu. Fungsi getdata harus berulang terus ke atas penjana getstuff, menghapuskan senarai perantaraan yang tidak perlu.

Contoh Penggunaan

Mengolah semula kod menggunakan penjana menghasilkan penyelesaian yang lebih cekap:

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

Kod ini secara berkesan memproses satu baris pada satu masa, dengan ketara mengurangkan memori penggunaan dan meningkatkan prestasi, walaupun untuk fail CSV yang besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Fail CSV Besar dengan Cekap dalam Python 2.7?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn