【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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!