/emotioNet_URLs_Download

下载emotioNet_URLs的Python脚本,实现异步并行下载。

Primary LanguagePython

异步下载器

通过这一个多星期的摸索,终于写出了一个稳定的异步下载样例


该下载器下载使用异步IO下载urls列表文件中的图片,通过调整并行任务数,可以快速下载百万级的图片。


使用:

使用时,修改main.py文件中的url文件路径即可,根据网络速度和机器性能,调整max_tasksmax_sem

注意

当max_tasks过大,可能会造成IO错误“too many open files”的错误,这是因为同时保存过多的文件,程序打开的文件/socket连接数量超过系统设定值。

解决方案

  • 使用ulimit -a查看用户最大允许打开文件数量,其中open files (-n) 1024表示每个用户最大允许打开的文件数量是1024
  • 设置open files数值
$ ulimit -n 2048

这样就可以把当前用户的最大允许打开文件数量设置为2048了,但这种设置方法在重启后会还原成默认值

永久设置方法

$ vim /etc/security/limits.conf
# 在最后加入
* soft nofile 4096 # 最前面的 * 表示所用用户,也可根据需要设置某一用户
* hard nofile 4096

改完后注销一下就能生效