所以我有一些相当大的json编码文件.最小的是300MB,但这是迄今为止最小的.其余的是多GB,大约2GB到10GB +.
所以当我尝试使用Python加载文件时,我似乎耗尽了内存.我目前正在进行一些测试,看看处理这些东西需要多长时间才能看到从这里开始.这是我用来测试的代码:
from datetime import datetime
import json
print datetime.now()
f = open('file.json', 'r')
json.load(f)
f.close()
print datetime.now()
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,Python给了我一个MemoryError.似乎json.load()调用json.loads(f.read()),它试图首先将整个文件转储到内存中,这显然不会起作用.
我能干什么方式解决这个问题吗?
我知道这是旧的,但我不认为这是重复的.答案是一样的,但问题是不同的.在"重复"中,问题是如何有效地读取大文件,而这个问题处理甚至根本不适合内存的文件.效率不是必需的.
Gar*_*tty 76
最好的选择似乎是使用类似ijson的东西- 一个可以将JSON用作流而不是块文件的模块.
编辑:另外值得一看- 卡希夫的评论有关json-streamer.
| 归档时间: |
|
| 查看次数: |
84572 次 |
| 最近记录: |