【Python学习】下载faceScrub人脸数据库 (多线程版本)

54在上一篇博文中,我用单线程版本的Python来实现下载脚本,其中最大的不足在于它是单线程的,很慢。


其实,下载网络图片是天然的具有并行性的,因为下载每一副图片都是独立的,甚至线程之间都不用交互。


 -*- coding: utf-8 -*-
"""
Created on Tue Apr 07 20:19:38 2015

@author: Chenriwei
"""

import threading
import time
import urllib


def download_and_save(url,savename):
        try:
         urlopen=urllib.URLopener()
         fp = urlopen.open(url)
         data = fp.read()
         fp.close()
         fid=open(savename,'w+b')
         fid.write(data)
         print "下载成功:"+ url
         fid.close()
        except IOError:
         print "下载失败:"+ url


def get_all_iamge(filename):
    fid=open(filename)
    lines=fid.readlines()
    for line in lines:
        line_split=line.split('\t')
        name=line_split[0]
        image_id=line_split[1]
        face_id=line_split[2]
        box=line_split[4]
        image_url=line_split[3]
        if False == os.path.exists(name):
            os.mkdir(name)
        savefile=name+'/'+image_id+'.jpg'  
        #最多1000个线程,
        while True:
                if(len(threading.enumerate()) < 1000):
                    break
                
        t = threading.Thread(target=download_and_save,args=(image_url,savefile,))
        t.start()

if __name__ == "__main__":
    get_all_iamge('facescrub_actresses.txt')


用多线程去下载图片,明显就快很多了,看自己电脑的网速,一个小时一般就可以都下载完数据库。


下载好了的网盘地址:


链接:http://pan.baidu.com/s/1qWQpqEw 密码:tyym



评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值