如果我有几个大文件JSON文件(500MB压缩,3 3GB未压缩),有什么好的做法来处理它们?
我试过了:
combined_list = []
with gzip.open("compressed_JSON.gz", "r") as file:
for each in file:
combined_list.append(json.loads(each))
# do stuff with newly appended list (dataframe,
calculations, visualization etc)这需要相当长的时间。另外,在执行过程中,我的内存几乎全部被消耗掉了,即使在执行结束后,仍有大量内存仍在“使用”。
或者,我尝试过:
combined_list = []
with gzip.open("compressed_JSON.gz", "r") as file:
for each in file:
combined_list.append(json.loads(each))
with gzip.open("compressed_JSON2.gz", "r") as file2:
for each in file2:
combined_list.append(json.loads(each))
# do stuff with newly appended list (dataframe,
calculations, visualization etc)它一次执行五个文件中的两个。与第一种方法相比,它可能需要7-8倍的时间。我无法想象我怎么能把5个都处理好。
我已经尝试了相同的方法,但没有附加(所以逐行阅读),这要快得多,但这意味着我只得到它最后迭代过的对象。
通过sys.getsizeof(),完成的附加列表的大小只有10MB左右,所以我不确定在代码完成运行后,还有什么在继续“吞噬”我的资源。
提前谢谢。
发布于 2020-12-02 21:36:10
可能不是你想要的100%,但要考虑到:
我不得不解析和处理11G文件。然而,这是纯文本。首先尝试了Python,但也遇到了问题。我最终做的是使用https://github.com/SciSharp/Numpy.NET使用C#解析文件,多线程处理数据,并最终写入numpy数组
如果你有5个不同的文件,你也可以多线程的,只要你有足够的RAM。
HTH。
https://stackoverflow.com/questions/65108965
复制相似问题