gpt4 book ai didi

使用 json.loads 时出现 Python 段错误——将 JSON 加载到列表中的替代方法?

转载 作者:太空狗 更新时间:2023-10-30 01:34:08 35 4
gpt4 key购买 nike

我正在尝试将一些 JSON Twitter 数据加载到列表中,但我却收到了segmemtation fault (core dumped)

虽然我很想升级我的内存,但现在根本不是一个选择。我想知道是否有某种方法可以遍历此列表而不是尝试将其全部加载到内存中?或者也许有一种不同类型的解决方案可以让我将此 JSON 数据加载到列表中?

In [1]: import json

In [2]: data = []

In [3]: for i in open('tweets.json'):
...: try:
...: data.append(json.loads(i))
...: except:
...: pass
...:

Segmentation fault (core dumped)

数据是使用 Twitter Streaming API 在大约 10 天内收集的,大小为 213M。

机器规范:

  • Oracle 虚拟机虚拟机
  • 操作系统:Ubuntu(64 位)
  • 基本内存:1024 MB
  • 视频内存:128 MB
  • 存储(虚拟大小):8.00 GB 动态分配

我正在使用 iPython(2.7.6 版),并通过 Linux 终端窗口访问它。

最佳答案

在几乎任何现代机器上,213MB 的文件都非常小,很容易装入内存。我已经将更大的推文数据集加载到普通现代机器的内存中。但也许您(或稍后阅读本文的其他人)不是在现代机器上工作,或者它是一台内存容量特别小的现代机器。

如果确实是数据大小导致segmentation fault,那你可以试试ijson用于迭代 JSON 文档 block 的模块。

这是该项目页面的示例:

import ijson

parser = ijson.parse(urlopen('http://.../'))
stream.write('<geo>')
for prefix, event, value in parser:
if (prefix, event) == ('earth', 'map_key'):
stream.write('<%s>' % value)
continent = value
elif prefix.endswith('.name'):
stream.write('<object name="%s"/>' % value)
elif (prefix, event) == ('earth.%s' % continent, 'end_map'):
stream.write('</%s>' % continent)
stream.write('</geo>')

关于使用 json.loads 时出现 Python 段错误——将 JSON 加载到列表中的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24141861/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com