刚从 Stackless Python 开始。我正在尝试在运行时创建一些小任务,即在调用stackless.run()
. 我认为这个函数不会阻塞主线程,所以我可以在必要时创建新的小任务。所以我决定制作一个在 tasklet 中运行的 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 秒创建一个新的 tasklet,每个都应该打印“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!
...
但是运行代码时没有输出。
这里有什么问题?