Ich lade Bilder aus dem Internet, und wie sich herausstellt, muss ich viele Bilder herunterladen. Ich verwende eine Version des folgenden Code-Fragment (tatsächlich durch die Links Looping Ich beabsichtige, die Bilder zum Download und Download:Beschleunigung urlib.urlretrieve
import urllib
urllib.urlretrieve(link, filename)
Ich lade etwa 1000 Bilder alle 15 Minuten, die furchtbar langsam auf die Zahl basiert herunterladen von Bildern muss ich
Für Effizienz, ich habe einen Timeout alle 5 Sekunden (noch viele Downloads viel länger dauern.):
import socket
socket.setdefaulttimeout(5)
Neben einen Job auf einem Computer-Cluster ausgeführt Downloads parallelisieren, wird Da ist es um das Bild schneller/effizienter zu machen?
Ich denke, das könnte Sie begeistern: http://stackoverflow.com/questions/1628766/python-package-for-multi-threaded-spider-w-proxy-support – snahor
Schauen Sie in Pakete wie scrapy oder twisted. Scrapy basiert auf Twisted, aber ein bisschen einfacher zu bedienen. Beide bieten eine nicht blockierende API. Auf diese Weise können Sie mehrere Dateien als eine Datei herunterladen. ** Sei einfach nett und beschränke die Anzahl der parallelen Downloads vom selben Server ** –
Hallo Tammo, vielen Dank. Btw, ich fand einen ausgezeichneten Artikel, der scrappy mit urllib2 vergleicht: http://www.scrapinginsider.com/2016/01/scrapy-urllib2-requests-beautifulsoup-lxml.html - auch glaube ich, dass Multithreading die Leistung erheblich verbessern kann des obigen Codes. Sobald ich genau herausgefunden habe, wie es geht, werde ich eine Antwort schreiben –