我想處理一個3GB的XML文件,並在讀取文件並在字典中存儲一些數據的循環中獲取內存錯誤。創建大型字典的Python內存錯誤
class Node(object):
def __init__(self, osmid, latitude, longitude):
self.osmid = int(osmid)
self.latitude = float(latitude)
self.longitude = float(longitude)
self.count = 0
context = cElementTree.iterparse(raw_osm_file, events=("start", "end"))
context = iter(context)
event, root = context.next()
for event, elem in context:
if event == "end" and elem.tag == "node":
lat = float(elem.get('lat'))
lon = float(elem.get('lon'))
osm_id = int(elem.get('id'))
nodes[osm_id] = Node(osm_id, lat, lon)
root.clear()
我正在使用迭代解析方法,所以問題不在於讀取文件。我只是想將數據存儲在字典中供以後處理,但似乎字典變得太大了。後來在程序中我讀了鏈接,並且需要檢查鏈接引用的節點是否在最初的一批節點中,這就是爲什麼我將它們存儲在字典中的原因。我怎麼能夠大大減少內存佔用(腳本甚至沒有接近完成,所以剃掉碎片和碎片不會有多大幫助),或者大大增加可用於python的內存量?監控內存使用情況,它看起來像蟒蛇大約在1950 MB,我的電腦仍然有大約6 GB的RAM。
您是否正在運行64位Python? –
哦拍攝,我以爲我只是檢查,而我實際上是在使用32.這是我的理解,有32內存使用硬限制,但沒有64,對不對? – wmebane
還有一個64位的硬盤上限,但你不太可能觸及它,因爲它的容量是千兆字節的倍數。 –