Асинхронное порождение функций с помощью Gevents

Я проходил Gevents (библиотека python для функциональности asych) и написал очень маленькую программу, чтобы понять, как она работает, но результаты оказались весьма озадачивающими. Ниже приведен код

import gevent 
import time 


def mytime(t):
    time.sleep(t)
    print " i have slept for ",t,"secs"

x = range (0,10)
x.reverse()

for i in x :
    jobs = [ gevent.spawn(mytime , i) ] 
gevent.joinall(jobs)

На выходе, сколько бы раз я не запускал, я получаю

 i have slept for  9 secs
 i have slept for  8 secs
 i have slept for  7 secs
 i have slept for  6 secs
 i have slept for  5 secs
 i have slept for  4 secs
 i have slept for  3 secs
 i have slept for  2 secs
 i have slept for  1 secs
 i have slept for  0 secs

Есть похожий пример, представленный как часть gevent tutorials.

где функциональность asynch довольно очевидна. Все, что я сделал, это добавил в код функцию sleep. Не должен ли вывод быть примерно таким?

     i have slept for  6 secs
     i have slept for  8 secs
     i have slept for  5 secs
     i have slept for  9 secs
     i have slept for  7 secs
     i have slept for  0 secs
     i have slept for  3 secs
     i have slept for  2 secs
     i have slept for  1 secs
     i have slept for  4 secs

5
задан Rahul 7 February 2012 в 05:35
поделиться