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
crella
V2EX  ›  Python

菜鸟求问多线程下载的缓存设计

  •  
  •   crella · 2020-05-07 12:54:32 +08:00 via Android · 1981 次点击
    这是一个创建于 1661 天前的主题,其中的信息可能已经有所发展或是发生改变。
    写了个爬 m3u8 的 ts 的脚本。现在下载 ts 的线程有两个。

    想改进一下:

    1 、每下载够 30 个文件才一次性保存,下载完 30 个文件后把它们从列表里删除,方便 GC 。

    2 、保存 ts 文件到硬盘上时,不中断两个下载线程的继续。

    3 、每隔 1 分钟,在终端上打印:队列里还有多少个待下载的链接。

    注:不需要爬得太快,反正那个 hls 服务器是限带宽的。

    问一下各位大佬应该怎么设计比较省资源。谢谢。
    4 条回复    2020-05-08 09:17:03 +08:00
    crella
        1
    crella  
    OP
       2020-05-07 12:58:31 +08:00 via Android
    注:开两线程是因为那个服务器下载文件有时候会超时,一个好几 K 的文件要下几分钟。觉得检查下载速度有点麻烦,就开两个线程先应付一下。
    sola97
        2
    sola97  
       2020-05-07 13:27:08 +08:00
    不如 aria2
    aguesuka
        3
    aguesuka  
       2020-05-07 22:18:34 +08:00 via Android
    单线程非阻塞 socket,爬到以后也是非阻塞去写文件
    luozic
        4
    luozic  
       2020-05-08 09:17:03 +08:00 via iPhone
    生产者消费者模型,消费者搞个资源池
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:40 · PVG 08:40 · LAX 16:40 · JFK 19:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.