cuốn sách gpt4 ai đã làm

python không đủ RAM sử dụng dung lượng ổ đĩa thay vì RAM

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 10:36:13 26 4
mua khóa gpt4 Nike

Hãy xem xét mã python sau

với open(sys.argv[2], 'r') là vây, \
open(sys.argv[3], 'w') dưới dạng fout:
reader = csv.DictReader(fin, delimiter='%s' % sys.argv[4])
writer = csv.DictWriter(fout, reader.fieldnames, address='excel')
nhà văn.writeheader()
nhà văn.writerows(người đọc)

Giả sử chúng ta có một tệp lớn khoảng 2GB làm đầu vào và hệ thống của chúng ta chỉ có RAM 512 MB, điều này có thể gây ra lỗi Sử dụng bộ nhớ

Có cách nào để làm cho mã của tôi sử dụng dung lượng ổ đĩa thay vì RAM, ngay cả khi điều đó sẽ chậm hơn không? Hay đây là sự cố hệ điều hành và cần bổ sung thêm trao đổi?

gia hạn

Đoạn mã trên chỉ là một ví dụ

Hãy xem xét ví dụ này

với io.open(sys.argv[2], 'r',coding='utf8',error='ignore') là vây, \
io.open(sys.argv[3], 'w',coding='utf8',error='ignore') là lỗi:
row = csv.DictReader(fin, delimiter='%s' % sys.argv[4])
fout.write(json.dumps(list(rows), indent=4))

khi sử dụngjson.dumps, bạn luôn cần ghi dữ liệu một lần, nếu muốn nối thêm tệp, bạn phải đọc tệp và nối dữ liệu rồi ghi vào tệp, đại loại như thế này

dữ liệu = readjson(jsonfile)
data.append(newentry)
jsonfile.write(json.dumps(dữ liệu))

Cập nhật 2 bằng cách sử dụng máy phát điện (tiến hóa lười biếng)

Tôi có ý tưởng này nhưng tôi không chắc liệu nó có tạo nên sự khác biệt hay không

gen def (danh sách):
cho e trong danh sách:
năng suất e

với open(sys.argv[2], 'r') là vây, \
open(sys.argv[3], 'w') dưới dạng fout:
reader = csv.DictReader(fin, delimiter='%s' % sys.argv[4])
writer = csv.DictWriter(fout, reader.fieldnames, address='excel')
nhà văn.writeheader()
writer.writerows(gen(reader))

với open(sys.argv[2], 'r') là vây, \
open(sys.argv[3], 'w') dưới dạng fout:
row = csv.DictReader(fin, delimiter='%s' % sys.argv[4])
# fout.write(json.dumps(gen(rows), indent=4)) -> gây ra lỗi không thể tuần tự hóa JSON
fout.write(json.dumps(gen(list(rows)), indent=4))

câu trả lời hay nhất

khi sử dụng json.dumps bạn luôn cần ghi dữ liệu cùng một lúc

Không đúng sự thật. Bạn thực sự nên áp dụng phương pháp truyền phát dữ liệu lớn. Trong trường hợp này, một cái gì đó như:

fout.write('[')
đối với ii, hàng trong liệt kê(hàng):
nếu ii != 0:
fout.write(',\n')
json.dump(hàng, fout, thụt lề=4)
fout.write(']')

Bằng cách này bạn có thể viết từng hàng một và cũng lưu lại tất cả Đưa vào những gì bạn không cần danh sách chi phí chung.

Về việc python không có đủ RAM để sử dụng dung lượng ổ đĩa thay vì RAM, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/37412214/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress