我目前没有运行 stackless,所以我不能自己尝试。

import stackless
ch1 = stackless.channel()
ch2 = stackless.channel()

ch1.send(ch2)
ch3 = ch1.receive()

ch2 和 ch3 那么是同一个 channel 吗?说:
text = "Hallo"
ch2.send(text)
assert text == ch3.receive()

这个功能让我想起了 Robert Pike(以 talk about Newsqueak 名气)在谷歌提供的一个 Plan9。在 Newsqueak 中,您可以通过 channel 发送 channel 。

最佳答案

是的。刚刚测试。

>>> import stackless
>>> ch1 = stackless.channel()
>>> def a():
...  ch2 = stackless.channel()
...  ch1.send(ch2)
...  ch2.send("Hello")
...
>>> def b():
...  ch3 = ch1.receive()
...  print ch3.receive()
...
>>> stackless.tasklet(a)()
<stackless.tasklet object at 0x01C6FCB0>
>>> stackless.tasklet(b)()
<stackless.tasklet object at 0x01C6FAB0>
>>> stackless.run()
Hello

关于python - 在无堆栈 Python 中,您可以通过 channel 发送 channel 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/638464/

10-12 18:10