2016-04-06 10 views
1

Ich suche die Threading-Lösung zu implementieren hier vorgeschlagen: What is the fastest way to send 100,000 HTTP requests in Python?Parallel API-Anfragen in Python

Meine Frage ist, wenn mein „etwas tun“, nachdem Sie der URL-Aufruf zu einer Liste eine neue Zeile angehängt werden soll (mit data.append) - Wird dies zu Problemen führen?

Auch werde ich auch Python 2 und mit urllib2 - würde die empfohlene Lösung überhaupt ändern, wenn es urllib2 statt httplib wäre?

Antwort

0

Da Sie versuchen, I/O-gebundene Operation zu implementieren, würde ich Ihnen vorschlagen, gevent zu verwenden. Hier ist die example.

Oder verwenden Sie this Antwort. Gevent unterstützt nicht nur Python 2 und Python 3, sondern auch PyPy, was auch Ihr Programm beschleunigen kann.

0

Asynchronous IO ist die Lösung für genau dieses Problem. Da Ihr Problem vollständig IO gebunden ist, gibt es keinen Grund für die Verwendung mehrerer Threads. Wenn Sie Python 3.4 mit asyncio verwenden, können Sie Tulpen verwenden. Sie können auch die Bibliothek Trollius verwenden, die in Python 2x asyncio-Likes-Syntax bereitstellt.

+0

Haben Sie ein Beispiel mit Tulpen, die Sie empfehlen würden? Ich benutze Python 3 nicht, also bin ich daran interessiert zu sehen, wie ich das anwenden kann. – reese0106

+0

Ich habe den Link zur Dokumentation zu trollius hinzugefügt. Ein nachträglicher Einfall mit Trollius wäre einfacher als Tulpen – hspandher