apachecn/CDNDrive

[Enhanced]批量下载列表中的文件

Blackbytes-max opened this issue · 1 comments

我有批量下载大量小文件的需求,最多的情况下有接近100000个,我以一行一个的格式把meta链接存储在一个list文件中。我尝试用脚本并发多线程循环遍历下载,但随着并发数的增加,python崩溃的机率也增加了,这导致最后会漏掉不少文件(5%~10%),而且CPU开销也很大。我本人不太懂python,所以也不知道该怎么改。
从我查资料的情况来看,异步多线程无阻塞的实现方式是效率最高的。我建议为该项目添加-l (list)和-j (jobs)参数,前者表示从列表文件中读取meta链接,后者表示最大并发数。

异步需要专用的IO API,并且所有阻塞操作都需要改成异步的。所以本项目不考虑异步API。