import json
with open("reverseURL.json") as file:
file2 = json.load(file)
eagle = file2["eagle"]
sky = file2["sky"]
eagleAndSky = set(eagle).intersection(sky)
print(eagleAndSky.pop())
print(eagleAndSky.pop())
我试图用一个4.8gbs的json文件来运行这段代码,但是每次我运行它,它都会冻结我的计算机,我不知道该怎么做。json文件包含在照片中用作键的标记,对于属性,它们是包含该标记的图像url。当我在从测试和验证集创建的json文件上运行它时,这个程序可以工作,因为它们很小,但是当我在训练集中的json文件上运行它时,它会冻结我的计算机,因为这个文件很大,比如4.8gb。在
得到的答案最简单。得到足够的空间来保存解析后的JSON,你就有了两个集合,你的算法将再次变得更快。在
如果买更多的内存是不可能的,你将需要制定一个算法,而不是像饥饿的内存。作为第一步,考虑使用像ijson这样的热气腾腾的JSON解析器。这将允许您只在内存中存储您关心的文件片段。假设您在
eagle
和sky
中有很多重复项,单独执行此步骤可能会减少内存使用量,从而再次快速运行。下面是一些代码来说明,您必须运行pip install ijson
才能运行它:如果使用
^{pr2}$ijson
将json解析为steam并不能降低内存使用率,那么您必须将临时状态存储在磁盘上。Pythonsqlite3
模块非常适合这种类型的工作。您可以创建一个临时文件数据库,其中一个表用于eagle,一个表用于sky,将所有数据插入到每个表中,添加一个唯一索引以删除重复数据(并在下一步中加快查询速度),然后连接这些表以获得交集。下面是一个例子:相关问题 更多 >
编程相关推荐