taskletを使ってみる

stackless.taskletを試してみた。

import stackless

def foo(name):
    for i in range(5):
        print name, i
        stackless.schedule()

[stackless.tasklet(foo)(s) for s in ['hoge', 'fuga', 'bar']]
r = stackless.run(10)
print '-----'
r.insert()
stackless.run()

で、出力結果は、

hoge 0
fuga -----
bar 0
hoge 1
0
bar 1
hoge 2
fuga 1
bar 2
hoge 3
fuga 2
bar 3
hoge 4
fuga 3
bar 4
fuga 4

となった。なるほど面白い。
調子に乗ってtaskletを100000個ぐらい作って実行してみたけど、問題なく動いてる。
さすがだ。