Inwiefern sind Grequests asynchron?

Ich benutze die Python-Anforderungsbibliothek seit einiger Zeit und musste kürzlich eine Anforderung asynchron stellen. Dies bedeutet, dass ich die HTTP-Anforderung absenden, meinen Hauptthread weiterhin ausführen lassen und einen Rückruf anfordern möchte, wenn die Anfrage kehrt zurück.

Natürlich wurde ich in die Bibliothek der Grequests geführt (https://github.com/kennethreitz/grequests), aber ich bin verwirrt über das Verhalten. Zum Beispiel:

import grequests

def print_res(res):
    from pprint import pprint
    pprint (vars(res))

req = grequests.get('http://www.codehenge.net/blog', hooks=dict(response=print_res))
res = grequests.map([req])

for i in range(10):
    print i

Der obige Code erzeugt die folgende Ausgabe:

<...large HTTP response output...>

0
1
2
3
4
5
6
7
8
9

Der Aufruf von grequests.map () blockiert offensichtlich, bis die HTTP-Antwort verfügbar ist. Wahrscheinlich habe ich das "asynchrone" Verhalten hier falsch verstanden, und die Grequests-Bibliothek dient nur dazu, mehrere HTTP-Anforderungen gleichzeitig auszuführen und alle Antworten an einen einzelnen Rückruf zu senden. Ist das genau?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage