只是从Stackless Python开始。我正在尝试在运行时(即调用后)创建一些tasklet stackless.run()
。我认为该功能不会阻塞主线程,因此我将能够在必要时创建新的tasklet。因此,我决定制作一个在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!
...
但是,运行代码时没有输出。
怎么了
只是一个猜测,但我认为您需要stackless.schedule()
在t.insert()之后调用,然后再睡在creator()中。我认为创作者并没有放弃控制权。对于say_hello也是一样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句