Tôi có một tập tin .txt 30MB, với một dòng dữ liệu (30 Triệu chữ số)
Thật không may, mọi phương pháp tôi đã cố gắng (mmap.read()
, readline()
, phân bổ RAM 1GB, cho vòng lặp) mất 45 + phút để đọc toàn bộ tệp. Mọi phương pháp tôi tìm thấy trên internet dường như hoạt động trên thực tế là mỗi dòng là nhỏ, do đó mức tiêu thụ bộ nhớ chỉ lớn như dòng lớn nhất trong tệp. Đây là mã tôi đang sử dụng.Reading Very Large Một Liner Text File
start = time.clock()
z = open('Number.txt','r+')
m = mmap.mmap(z.fileno(), 0)
global a
a = int(m.read())
z.close()
end = time.clock()
secs = (end - start)
print("Number read in","%s" % (secs),"seconds.", file=f)
print("Number read in","%s" % (secs),"seconds.")
f.flush()
del end,start,secs,z,m
Khác với việc tách số từ một dòng sang các dòng khác nhau; mà tôi không muốn làm, là có một phương pháp sạch hơn mà sẽ không đòi hỏi một phần tốt hơn của một giờ?
Nhân tiện, tôi không nhất thiết phải sử dụng tệp văn bản.
tôi có: Windows 8.1 64-Bit, RAM 16 GB, Python 3.5.1
Đọc một tệp 30MB nhanh chóng. Đó là 'int (filecontent)' là chậm. –
Bạn có biết rằng việc chuyển đổi nó sẽ gây ra một xấp xỉ về nó, nhiều hay ít tùy thuộc vào loại bạn chọn? Bạn sẽ không giữ tất cả các chữ số gazillion của nó. – Roberto
... Ý tôi là, tất nhiên bạn có thể làm việc với con số đó, nhưng các loại tiêu chuẩn sẽ không chứa 30 triệu chữ số có nghĩa trong một số. Chúng sẽ gần đúng. Bạn sẽ phải tìm kiếm, hoặc thực hiện, một cách để làm điều đó. – Roberto