スタックレス Python を始めたばかりです。実行時、つまり を呼び出した後に、いくつかのタスクレットを作成しようとしていますstackless.run()
。この関数はメイン スレッドをブロックしないので、必要に応じて新しいタスクレットを作成できると思いました。そこで、タスクレットで実行される tasklet-creator 関数を作成することにしました。これは私が持っているものです:
import stackless
from time import sleep
def say_hello(s):
while True:
print("Hello, %s!" % s)
sleep(5)
def creator():
i = 0
while True:
i += 1
t = stackless.tasklet(say_hello)(str(i))
t.insert()
sleep(5)
stackless.tasklet(creator)()
stackless.run()
このコードは、5 秒ごとに新しいタスクレットを作成し、それぞれが「Hello, {number of tasklet}!」と出力する必要があります。無限に (これも 5 秒ごとに)。予想される出力は次のとおりです。
Hello, 1!
Hello, 1!
Hello, 2!
Hello, 1!
Hello, 2!
Hello, 3!
Hello, 1!
Hello, 2!
Hello, 3!
Hello, 4!
...
しかし、コードを実行しても何も出力されません。
ここで何が問題なのですか?