首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取和处理多个大型数据文件的良好实践?

读取和处理多个大型数据文件的良好实践?
EN

Stack Overflow用户
提问于 2020-12-02 21:24:57
回答 1查看 63关注 0票数 0

如果我有几个大文件JSON文件(500MB压缩,3 3GB未压缩),有什么好的做法来处理它们?

我试过了:

代码语言:javascript
复制
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)

这需要相当长的时间。另外,在执行过程中,我的内存几乎全部被消耗掉了,即使在执行结束后,仍有大量内存仍在“使用”。

或者,我尝试过:

代码语言:javascript
复制
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左右,所以我不确定在代码完成运行后,还有什么在继续“吞噬”我的资源。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-12-02 21:36:10

可能不是你想要的100%,但要考虑到:

我不得不解析和处理11G文件。然而,这是纯文本。首先尝试了Python,但也遇到了问题。我最终做的是使用https://github.com/SciSharp/Numpy.NET使用C#解析文件,多线程处理数据,并最终写入numpy数组

如果你有5个不同的文件,你也可以多线程的,只要你有足够的RAM。

HTH。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65108965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档