私はGevents(asych機能用のPythonライブラリ)を実行していて、それがどのように機能するかを理解するために非常に小さなプログラムを作成しましたが、結果は非常に困惑しました。以下はコードです
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チュートリアルの一部として提示された同様の例があります。
非同期機能はかなり明白です。私が行ったのは、コードにスリープ機能を追加することだけです。出力はこのようなものであってはなりませんか?
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