+15 投票
分类:Python编程与实践 | 用户: (2.6k 分)
本地文档a.txt有如下内容:

http://www.aaa.com/1.txt

http://www.aaa.com/2.txt

http://www.aaa.com/3.txt

...

http://www.aaa.com/999.txt

http://www.aaa.com/1000.txt

但用这个方式速度慢,等待时间比较长,如果想加速下载,不想排队一个个下,用什么方式比较好?

1个回答

+6 投票
用户: (45.4k 分)

加速的话,通用的思路是:单线程->多线程->多进程->分布式,采用优化的调度策略,可以达到对网络资源的充分利用。用tomorrow实现的简单多线程参考代码如下:

import requests

from tomorrow import threads

@threads(5)
def download(url):
    return requests.get(url)

if __name__ == "__main__":
    responses = [download(f'http://www.aaa.com/{fid}.txt') for fid in range(1, 1001)]
    html = [response.text for response in responses]
    

tomorrow:tomorrow3 · PyPI

也可以参考我之前在网络搜索课上讲的爬虫优化部分:13.爬虫进阶:多线程、API及请求头设置_哔哩哔哩_bilibili

欢迎来到 爱可可Q&A ,有什么问题可以尽管在这里提问,你将会收到其他成员的热心回答。
...