2016-09-06 83 views
2

我一直在試圖向JSON文件寫入大量(> 800MB)的數據;我做的試驗和錯誤的一些相當數量得到這個代碼:如何編寫大型的JSON數據?

def write_to_cube(data): 
    with open('test.json') as file1: 
     temp_data = json.load(file1) 

    temp_data.update(data) 

    file1.close() 

    with open('test.json', 'w') as f: 
     json.dump(temp_data, f) 

     f.close() 

運行它只是調用函數write_to_cube({"some_data" = data})

現在有了這個代碼的問題是,它的速度快於數據量小,但是當test.json文件超過800mb時,問題就來了。當我嘗試更新或向其添加數據時,需要很長時間。

我知道有外部庫,如simplejson或​​,我不確定如何使用它們。

有沒有其他辦法解決這個問題?

更新:

我不知道怎麼這可能是一個重複的,其他文章說什麼關於寫作或更新一個大的JSON文件,而他們認爲,大約只有解析。

Is there a memory efficient and fast way to load big json files in python?

Reading rather large json files in Python

以上都不是解決的這個問題重複。他們沒有寫任何關於寫作或更新的內容。

+1

可能重複的[是 - 這是一個高效的內存和快速的方式來加載大json文件在蟒蛇](http://stackoverflow.com/questions/2400643/is-there-a-memory-efficient-and-fast-way-to-load-big-json-files-in-python) – BPL

+0

基本上JSON並不是格式的好選擇,序列化大量的數據。 –

+0

[在Python中讀取相當大的json文件]可能的副本(http://stackoverflow.com/questions/10382253/reading-rather-large-json-files-in-python) –

回答

0

所以問題是你有一個很長的操作。以下是我通常會採用的幾種方法:

  1. 優化操作:這很少奏效。我不會推薦任何能夠快幾秒鐘解析json的超級庫
  2. 改變你的邏輯:如果目的是保存和加載數據,可能你想嘗試其他的東西,比如將對象存儲到二進制文件中文件來代替。
  3. 線程和回調,或某些Web框架中的延遲對象。對於Web應用程序,有時操作需要的時間比請求可以等待的時間長,我們可以在後臺執行操作(有些情況是:壓縮文件,然後將zip發送到用戶的電子郵件,通過調用另一個第三方的API發送SMS。 ..)
相關問題