De que maneira os assentos são assíncronos?

Eu tenho usado a biblioteca de pedidos python há algum tempo e, recentemente, tive a necessidade de fazer uma solicitação de forma assíncrona, o que significa que gostaria de enviar a solicitação HTTP, ter meu thread principal continuar a executar e ter um retorno de chamada quando o solicitar retornos.

Naturalmente, fui levada para a biblioteca de reservas (https://github.com/kennethreitz/grequests), mas estou confuso sobre o comportamento. Por exemplo:

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

O código acima produzirá a seguinte saída:

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

0
1
2
3
4
5
6
7
8
9

A chamada grequests.map () obviamente bloqueia até que a resposta HTTP esteja disponível. Parece provável que eu tenha entendido mal o comportamento 'assíncrono' aqui, e a biblioteca do grequest é apenas para executar várias solicitações HTTP simultaneamente e enviar todas as respostas para um único retorno de chamada. Isso é exato?

questionAnswers(3)

yourAnswerToTheQuestion