Python 的 pickle 加载大于内存上限的内容时会分段载入吗?应该怎么处理大文件读取?

2021-12-09 06:23:59 +08:00
 LeeReamond

要处理很大的内容,比如视频裸流之类的东西,如果全放到内存里内存会撑爆。目前对储存和读取都有疑问,python 的 pickle 模块能简单的解决这个问题吗?就是随便 pickle.dump 一下,比如 dump 了 100G ,然后 load 的时候它会自动分段读吗?还是一次性把 100G 都读进内存之后才能解码?

2311 次点击
所在节点    Python
11 条回复
ila
2021-12-09 07:27:14 +08:00
视频流本地存储后应该没有超过 2g 的
ila
2021-12-09 07:27:57 +08:00
@ila 超过后自动新文件
secsilm
2021-12-09 08:07:38 +08:00
没记错的话,pickle 是都读进内存的。
skinny
2021-12-09 08:45:30 +08:00
不要用 Python 存一大坨数据,会炸!
ysc3839
2021-12-09 09:12:32 +08:00
翻了下代码,load()是流式处理的,loads()是创建个 BytesIO 再 load()。不过看上去是纯 Python 实现的,性能大概不咋样。
paopjian
2021-12-09 09:56:10 +08:00
这操作有点骚啊,不怕死机数据全丢吗
ruanimal
2021-12-09 10:24:18 +08:00
视频流需要用 pickle ,直接二进制文件不行吗? pickle 应该需求完整文件才能加载对象吧,读文件倒是流式读的。
moomtong
2021-12-09 10:40:04 +08:00
Memory Map?不确定视频文件行不行
Volekingsg
2021-12-09 11:12:10 +08:00
apache arrow ?
lizytalk
2021-12-09 13:29:38 +08:00
mmap
LeeReamond
2021-12-11 01:10:20 +08:00
@ruanimal 主要是大文件自己切割不太方便,裸流的话,比如 10bit 视频,1080P60FPS ,一分钟二十多 G 出去了,自己要搞储存和读取,还要切割开始和结束的位置,还有可能出错还要纠错,感觉太难搞。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/821016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX