【发布时间】:2019-02-19 14:45:55
【问题描述】:
执行以下代码以加载多个大型 (~200MB) JSON 文件:
def work():
jsons = get_data()
# do something with the jsons
def get_data():
json_files = []
for json_path in file_paths_list:
json_files.append(load_json(json_path))
return json_files
def load_json(json_path):
import json
with open(json_path) as f:
return json.load(f)
这是 Pycharm 的自定义 VM 选项的外观(最大 30GB 堆大小,RAM 为 32GB):
# custom PyCharm VM options
-Xms25000m
-Xmx30000m
...
...
...
已应用“使缓存无效/重新启动”的热门建议。
在加载 2 个文件(总共 ~400MB)后,在第 3 次,抛出异常“MemoryError”。
我不明白为什么如果我有高达 30GB 的堆大小,只有 400MB 之后就会引发内存错误?
【问题讨论】:
-
因为加载到内存中的数据比文本文件本身占用更多的空间,因为所有元数据都添加到了对象中。例如,一个字符串比它的内容重。也就是说,30Gb 应该足够了
-
你也用命令行python(64位)测试过。 Pycharm 不执行任何操作。如果您的 python 版本是 32 bt,那可能就是问题所在。
-
@Jean-FrançoisFabre 但仍然 - 它超过 30GB?很多。
-
检查底层 python 解释器的版本。我敢打赌它是 32 位版本。
标签: python json pycharm out-of-memory