大批量文件下载
来源:互联网 发布:开淘宝网店的流程2017 编辑:程序博客网 时间:2024/06/05 10:18
今天碰到个问题:批量下载十几万张图片、且分散在很多网站上。
迅雷、FlashGet都有导入URL列表,然后批量下载的功能。但URL上万以后,速度很慢,界面几乎无响应甚至异常退出。最大任务数才几十,不给力。而图片文件又很小,单个文件不值得再多线程下载了。所以用下载工具不合适。
单下一张图片时,时间都是秒级的。系统所在SSD的IOPS大约50000,估计来几千个线程也能HOLD住。于是写了个C++程序,开300个线程,每线程再用system函数调用wget下载(中间还要经过cmd.exe去调用,实际是600个进程)。效果还不错。
正下得起劲时,看日志发现个缺陷:同一网站的内容随机分给多个wget,导致频繁重连,费了不少时间。给每个wget进程的URL最好在相同域上,又想出个办法:写段脚本把URL按域分成几百份,每个wget一份名单,照着下去,既快又简单。
(先前的程序就当是做多线程的习题了)
另:中间想改进时,杀掉了主程序。但任务管理器中看,系统还有几百个 cmd.exe 进程。手工删了几十个,烦了。linux有killall,Windows呢?……搜了下,有对应的:
- tasklist 查看所有进程
- tasklist /fi "imagename eq cmd.exe" 列出所有叫“cmd.exe”的进程。
- taskkill /fi "imagename eq cmd.exe" /f 杀掉所有叫“cmd.exe”的进程。世界清静了……
- 大批量文件下载
- curl多线程大批量分片下载大文件源码示例
- Linux rm删除大批量文件
- 大批量文件命名错误解决方案
- CombineFileinputFormat处理大批量小文件
- 提供 支持域名大批量查询 下载
- 用Visual C#实现文件大批量处理
- 用Visual C#实现文件大批量处理
- 用Visual C#实现文件大批量处理
- 用Visual C#实现文件大批量处理
- Linux大批量文件rm命令无效
- python大批量读写.doc文件的解决方案
- linux下rm 删除大批量文件报错解决
- linux 删除大批量文件 /bin/rm: Argument list too long
- 快速复制文件目录下大批量的文件名
- RHEL 6服务器版上用wget递归下载大批量备份文件, 中途中止的问题
- Nodejs大批量下载图片入坑指南(使用async和bagpipe处理大并发量请求)
- .net 执行多条cmd 命令方法与大批量CSV文件合并成一个文件方法
- 使您的页面在任何分辨率下保持全屏显示
- 脚本语言见解之一
- vc demension
- 绘图Draw
- 黑马程序员_关于内部类的几个问题的综合讨论。
- 大批量文件下载
- 琐碎的java
- 在Windows .NET平台下使用Memcached
- 通过netlink实现内核模块和应用层通信
- [学习记号 - SL代码] Silverlight可拖放工具类
- 【蝴蝶效应】
- 【青蛙现象】
- Excel VBA - 数组及其他知识
- 【鳄鱼法则】