Ich habe ein Python-Skript, das die Webseite herunterlädt, analysiert und einen Wert von der Seite zurückgibt. Ich brauche ein paar solcher Seiten, um das Endergebnis zu erhalten. Jeder Seitenabruf dauert lange (5-10s) und ich würde lieber parallel Anfragen stellen, um die Wartezeit zu verkürzen.
Die Frage ist - welcher Mechanismus wird es schnell, korrekt und mit minimaler CPU / Speicherverschwendung machen? Twisted, Asyncore, Threading, etwas anderes? Können Sie einen Link zu Beispielen bereitstellen?
Danke
UPD: Es gibt ein paar Lösungen für das Problem, ich suche nach dem Kompromiss zwischen Geschwindigkeit und Ressourcen. Wenn Sie einige Erfahrung Details erzählen könnten - wie es aus Ihrer Sicht schnell unter Last ist - es wäre sehr hilfreich.
multiprocessing.Pool kann ein guter Deal sein, es gibt einige nützliche Beispiele . Wenn Sie beispielsweise eine Liste von URLs haben, können Sie den Abruf von Inhalten gleichzeitig abbilden:
%Vor% Erstellen Sie eine Reihe von Prozessen, einen für jede URL, die Sie herunterladen möchten. Verwenden Sie Queue
, um eine Liste von URLs zu speichern, und lassen Sie die Prozesse eine URL aus der Warteschlange lesen, verarbeiten und einen Wert zurückgeben.
Verwenden Sie dafür ein asynchrones, d. h. ereignisgesteuertes statt blockierendes Netzwerk-Framework. Eine Möglichkeit besteht darin, twisted zu verwenden . Eine andere Option, die kürzlich verfügbar wurde, ist die Verwendung von Monokel. Dieses Mini-Framework versteckt die Komplexität nicht blockierender Operationen. Sehen Sie dieses Beispiel . Es kann verdreht oder Tornado hinter den Kulissen verwenden, aber Sie bemerken nicht viel davon.
Tags und Links python parallel-processing screen-scraping