我目前正试图从超过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