python - 如何编写大型JSON数据?

标签 python 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。当我尝试更新或添加数据时,它需要很长时间。

我知道有外部库,例如 simplejsonjsonpickle ,我不太确定如何使用它们。

有没有其他方法可以解决这个问题?

更新:

我不确定这怎么可能是重复的,其他文章没有提到编写或更新大型 JSON 文件,而只说解析。

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

Reading rather large json files in Python

以上都没有解决这个问题的重复。他们没有说任何关于写作或更新的事情。

最佳答案

所以问题是你的手术时间很长。以下是我通常采用的几种方法:

  • 优化操作:这很少奏效。我不会推荐任何可以将 json 解析速度快几秒钟的一流库
  • 更改逻辑:如果目的是保存和加载数据,您可能想尝试其他方法,例如将对象存储到二进制文件中。
  • 线程和回调,或某些 Web 框架中的延迟对象。对于 web 应用,有时操作时间比请求等待的时间长,我们可以在后台进行操作(一些情况是:压缩文件,然后将 zip 发送到用户的电子邮件,通过调用另一个第三方的 api 发送短信。 ..)
  • 关于python - 如何编写大型JSON数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39339044/

    相关文章:

    python - 在 Python 3 中将 str 显式转换为 float

    python - 为什么只读属性是可写的?

    java - typeinfo 的多态 Jackson 反序列化不适用于枚举

    使用模式的 python json 响应

    javascript - 使用 d3.nest 实现 D3 树形图 json

    python - ModuleNotFoundError : No module named msg1 (in ubuntu with python 2. 7.6 未显示任何错误)

    python - Cronjob - 运行脚本和 Python

    python - 从YahooFinance获取价格数据会导致: AttributeError 'nonetype' object has no attribute 'text'

    javascript - jQuery 中简单的 get API 调用

    json - JSON格式,有效的JSON显示语法错误