V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
LeeReamond
V2EX  ›  Python

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

  •  
  •   LeeReamond · 2021-12-09 06:23:59 +08:00 · 2293 次点击
    这是一个创建于 862 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    11 条回复    2021-12-11 01:10:20 +08:00
    ila
        1
    ila  
       2021-12-09 07:27:14 +08:00 via Android
    视频流本地存储后应该没有超过 2g 的
    ila
        2
    ila  
       2021-12-09 07:27:57 +08:00 via Android
    @ila 超过后自动新文件
    secsilm
        3
    secsilm  
       2021-12-09 08:07:38 +08:00 via Android
    没记错的话,pickle 是都读进内存的。
    skinny
        4
    skinny  
       2021-12-09 08:45:30 +08:00
    不要用 Python 存一大坨数据,会炸!
    ysc3839
        5
    ysc3839  
       2021-12-09 09:12:32 +08:00 via Android
    翻了下代码,load()是流式处理的,loads()是创建个 BytesIO 再 load()。不过看上去是纯 Python 实现的,性能大概不咋样。
    paopjian
        6
    paopjian  
       2021-12-09 09:56:10 +08:00
    这操作有点骚啊,不怕死机数据全丢吗
    ruanimal
        7
    ruanimal  
       2021-12-09 10:24:18 +08:00
    视频流需要用 pickle ,直接二进制文件不行吗? pickle 应该需求完整文件才能加载对象吧,读文件倒是流式读的。
    moomtong
        8
    moomtong  
       2021-12-09 10:40:04 +08:00
    Memory Map?不确定视频文件行不行
    Volekingsg
        9
    Volekingsg  
       2021-12-09 11:12:10 +08:00
    apache arrow ?
    lizytalk
        10
    lizytalk  
       2021-12-09 13:29:38 +08:00 via iPhone
    mmap
    LeeReamond
        11
    LeeReamond  
    OP
       2021-12-11 01:10:20 +08:00
    @ruanimal 主要是大文件自己切割不太方便,裸流的话,比如 10bit 视频,1080P60FPS ,一分钟二十多 G 出去了,自己要搞储存和读取,还要切割开始和结束的位置,还有可能出错还要纠错,感觉太难搞。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2841 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:52 · PVG 19:52 · LAX 04:52 · JFK 07:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.