Tôi có hai tệp văn bản lớn (~ 100 GB) phải được lặp lại thông qua cùng một lúc.zip() thay thế cho lặp qua hai lần lặp
Zip hoạt động tốt cho các tệp nhỏ hơn nhưng tôi phát hiện ra rằng nó thực sự tạo danh sách các dòng từ hai tệp của tôi. Điều này có nghĩa là mọi dòng được lưu trữ trong bộ nhớ. Tôi không cần phải làm bất cứ điều gì với các dòng hơn một lần.
handle1 = open('filea', 'r'); handle2 = open('fileb', 'r')
for i, j in zip(handle1, handle2):
do something with i and j.
write to an output file.
no need to do anything with i and j after this.
Có cách nào khác để zip() hoạt động như một trình tạo cho phép tôi lặp qua hai tệp này mà không sử dụng> 200 GB RAM không?
... thực sự, tôi biết một cách nhưng có vẻ như không phải là pythonic - trong khi line1: line1 = handle1.readline(); line2 = handle2.readline(); làm điều gì đó với line1 và line2 ... –
Phát biểu về môi trường bị hạn chế về bộ nhớ, bạn có thể tìm thấy http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html –