我在python「Python內存錯誤」中遇到內存問題。事實上,我嘗試使用這個腳本從大.bson
文件恢復數據:f.read Python內存錯誤
with open('xxxx.bson','rb') as f:
data = bson.decode_all(f.read())
錯誤消息:
data = bson.decode_all(f.read())
MemoryError
感謝您的幫助,您可以提供
我在python「Python內存錯誤」中遇到內存問題。事實上,我嘗試使用這個腳本從大.bson
文件恢復數據:f.read Python內存錯誤
with open('xxxx.bson','rb') as f:
data = bson.decode_all(f.read())
錯誤消息:
data = bson.decode_all(f.read())
MemoryError
感謝您的幫助,您可以提供
可以減少內存通過切換到decode_file_iter
消費,其中1)需要一個文件(不是它的內容)作爲輸入,並且2)返回一個生成器。
我使用這個庫:https://github.com/bauman/python-bson-streaming
from bsonstream import KeyValueBSONInput
f = open("xxxx.bson", 'rb')
stream = KeyValueBSONInput(fh=f)
for dict_data in stream:
print dict_data
f.close()
非常感謝您的支持。 –
多大的文件?我猜這是一個大文件(大於系統的可用內存)?現在你正在讀取內存中*全部*文件*兩次*(一次是原始數據,一次是解碼數據)。 – Carpetsmoker
如果文件太大,可以逐行掃描:'for line in f' – Matthias
非常感謝您的支持。 –