Tôi có một số tệp văn bản rất lớn mà tôi cần xử lý, lớn nhất là khoảng 60 GB.Xử lý dòng tệp văn bản rất lớn (> 20GB) theo dòng
Mỗi dòng có 54 ký tự trong bảy trường và tôi muốn xóa ba ký tự cuối cùng khỏi mỗi trường trong ba trường đầu tiên - điều này sẽ giảm kích thước tệp xuống khoảng 20%.
Tôi là người mới sử dụng Python và có mã sẽ làm những gì tôi muốn làm vào khoảng 3,4 GB mỗi giờ, nhưng để trở thành một bài tập đáng giá, tôi thực sự cần phải nhận được ít nhất 10 GB/giờ - bất kỳ cách nào để tăng tốc độ này lên? Mã này không đến gần với thách thức bộ vi xử lý của tôi, vì vậy tôi đang thực hiện một dự đoán không được giáo dục rằng nó bị giới hạn bởi tốc độ đọc và ghi vào ổ cứng bên trong?
ProcessLargeTextFile():
r = open("filepath", "r")
w = open("filepath", "w")
l = r.readline()
while l:
x = l.split(' ')[0]
y = l.split(' ')[1]
z = l.split(' ')[2]
w.write(l.replace(x,x[:-3]).replace(y,y[:-3]).replace(z,z[:-3]))
l = r.readline()
r.close()
w.close()
Mọi trợ giúp sẽ thực sự được đánh giá cao. Tôi đang sử dụng IDLE Python GUI trên Windows 7 và có bộ nhớ 16GB - có lẽ một hệ điều hành khác sẽ hiệu quả hơn ?.
Chỉnh sửa: Đây là trích xuất tệp cần xử lý.
70700.642014 31207.277115 -0.054123 -1585 255 255 255
70512.301468 31227.990799 -0.255600 -1655 155 158 158
70515.727097 31223.828659 -0.066727 -1734 191 187 180
70566.756699 31217.065598 -0.205673 -1727 254 255 255
70566.695938 31218.030807 -0.047928 -1689 249 251 249
70536.117874 31227.837662 -0.033096 -1548 251 252 252
70536.773270 31212.970322 -0.115891 -1434 155 158 163
70533.530777 31215.270828 -0.154770 -1550 148 152 156
70533.555923 31215.341599 -0.138809 -1480 150 154 158
Nếu bạn đang viết bằng Python 2.7, bạn có thể thử chạy trên [PyPy] (http://pypy.org/). Trình biên dịch vừa mới có thể cung cấp cho bạn tốc độ hiệu suất trên lĩnh vực xáo trộn của bạn, mặc dù tôi không chắc nó sẽ giúp ích bao nhiêu nếu hệ thống tập tin là nút cổ chai. – pcurry
bạn có thể cho chúng tôi một đoạn nhỏ của tệp không? – root