我目前正在從字典中逐行寫入一個csv文件。就像這樣:python從字典中批量寫入文件
writer = csv.writer(open(filename, 'a'))
for key, value in mydict.items():
writer.writerow([key, value])
我的問題是這樣的:我的字典裏得到大(比如說〜20 MB),我通過堆空間,我的Linux機器的限制。所以,在我編寫它之前,我沒有在我的字典中累積所有數據,而是在數據可用時立即將我的數據寫入csv文件 - 從我的字典(這只是一個記錄長)開始。
現在,我看到了另一個問題 - 時間。由於大量的IO操作(數千行寫入磁盤),我的程序運行非常緩慢。
我需要找到一箇中間地帶。或許,在我的字典中累積5000(k,v)個數據並將它寫出到磁盤中,刷新我的字典,等待下一個5000(k,v)對...繼續此過程。你還有其他建議嗎?
總之,有沒有一個很好的批量寫入文件?
謝謝, PD/
20 MB時出現內存問題?你在嵌入式系統上運行它嗎? – Hyperboreus
5000寫入和20MB數據應該是快速的,除非你在一個非常殘缺的系統上。在你的程序中,其他的東西很慢。嘗試寫入/ dev/null - 如果你有相同的緩慢,那麼它不是你的文件寫入造成的問題。 – tdelaney
你的想法聽起來很簡單。真的,它只是在寫出代碼然後清除字典之前添加一個'if len(mydict)> = BATCH_SIZE:'。只要記得在最後寫出最後的部分批處理。你是否在尋找一個緩衝的CSV包裝,使其更容易?對於錯字, – abarnert