【Python學習】下載faceScrub人臉數據庫 (多線程版本)
來自: http://blog.csdn.net//chenriwei2/article/details/44925923
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
本文由用戶 VicWiseman 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!