현재 800,000 개 이상의 URL에서 파일을 다운로드하려고합니다. 각 URL은 .txt 파일을 나타냅니다.이파이썬을 사용하여 파일을 빠르게 다운로드하십시오.
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]))
이 방법은 작동
입니다 나는 모든
URL 정보를 저장하는 dataframe을 사용하고
, 그것은 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
파일의 평균 크기는 얼마입니까? – kums
@kums, 평균은 100kb입니다. – Brad