You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用islice处理ijson返回列表嵌套,引发内存溢出求助

问题原因与解决方法

核心问题:ijson的prefix参数使用错误

你的JSON结构是外层一个大列表包裹所有文档,而你用了prefix='',这会让ijson把整个顶层列表作为单个元素返回,自然会一次性加载18万条数据到内存,直接触发OOM。

正确用法

ijson通过prefix指定要迭代的JSON元素路径,对于数组内的元素,默认路径前缀是item。你需要把prefix改成'item',这样迭代器会逐个返回列表里的单个文档:

from itertools import islice
import ijson

with open('your_large_file.json', 'r') as f:
    # 逐个迭代列表中的单个文档
    docs = ijson.items(f, prefix='item')
    # 取前10000条
    for doc in islice(docs, 10000):
        # 处理单个文档
        print(doc)

额外说明

如果你的JSON结构更复杂(比如嵌套数组),可以用ijson的parse方法查看具体路径,确认需要的元素前缀。但针对当前的顶层列表结构,prefix='item'完全够用。

内容的提问来源于stack exchange,提问作者czr_RR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:57:04