我目前正試圖從超過800,000個網址下載文件。每個網址代表.txt文件。使用python快速下載文件
我使用的數據框來存儲所有
URL信息:
index Filename
4 .../data/1000015/0001104659-05-006777.txt
5 .../data/1000015/0000950123-05-003812.txt
......
代碼:
for i in m.index:
download = 'ftp:/.../' + m['Filename'][i]
print download
urllib.urlretrieve(download, '%s''%s.txt' % (m['Co_name'][i], m['Date'][i]))
這種方法可行,但是,速度是相當低它在7分鐘內下載15個文件。考慮到我有超過800,000個文件。這是超過9個月...所以我想知道有誰能幫我改進這個嗎?非常感謝。
經過一些真正有用的評論,我做了一些改變,下面是做多處理的好方法嗎?
代碼:
def download(file):
import ftplib
ftp = ftplib.FTP('XXXX')
ftp.login()
for i in m.index:
a = m['Filename'][i]
local_file = os.path.join("local_folder", '%s %s.txt' % (m['Co_name'][i], m['Data'][i]))
fhandle = open(local_file,'wb')
print fhandle
ftp.retrbinary('RETR '+a, fhandle.write)
fhandle.close()
m=pd.read_csv('XXXX.csv', delimiter=',', index_col='index')
pool = Pool(10)
pool.map(download, m)
使用多個線程 – laike9m 2014-10-01 13:24:46
文件的平均大小是多少? – kums 2014-10-01 13:31:51
@kums,averge是100kb – Brad 2014-10-01 13:34:05