2024-10-02 18:18:48 发布
网友
我对生成器、迭代器和协同程序有着粗糙的想法。(来自政治公众人物和其他教程)。我想实现一个协同程序,其中routine1将打印奇数,routine2将以如下方式无限打印偶数:
routine1: print odd yield to routine2 routune2: print even yield to routine1
对应该执行此操作的代码有一些粗略的想法,但无法使其成形。我不想要代码。但是,我也很欣赏伪代码风格的指针。谢谢您。在
PEP 342“通过增强生成器的协同程序”给出了一个示例3'一个简单的协同例程调度器或“蹦床”,它可以让协同程序通过产生它们希望调用的协同程序来“调用”其他协同程序。'对于这个非常具体的任务,您不需要太多的通用性(或PEP 342首先介绍的任何通用性方面),考虑到协同程序彼此之间没有任何通信,只有两个,它们的继承顺序是完全规则的,没有终止,等等。。。但是这段代码的一小部分仍然值得实现,因为它向您展示了比这个极其简单的示例本身更多的关于协程的信息。在
这两个协程应该是来自同一个生成器函数的两个实例,只是起点不同(毕竟,鉴于其体的简单程度,while True:循环毕竟没有必要写两次;-)。正如你将看到的,有趣的部分是蹦床,尽管你可以而且应该使它比一般的PEP342简单得多。在
while True:
你屈服于召唤你的方法。因此你不能屈服于常规1。你只是屈服。您可以让例程1调用例程2,例程2可以生成并返回例程1。在
PEP 342“通过增强生成器的协同程序”给出了一个示例3'一个简单的协同例程调度器或“蹦床”,它可以让协同程序通过产生它们希望调用的协同程序来“调用”其他协同程序。'对于这个非常具体的任务,您不需要太多的通用性(或PEP 342首先介绍的任何通用性方面),考虑到协同程序彼此之间没有任何通信,只有两个,它们的继承顺序是完全规则的,没有终止,等等。。。但是这段代码的一小部分仍然值得实现,因为它向您展示了比这个极其简单的示例本身更多的关于协程的信息。在
这两个协程应该是来自同一个生成器函数的两个实例,只是起点不同(毕竟,鉴于其体的简单程度,
while True:
循环毕竟没有必要写两次;-)。正如你将看到的,有趣的部分是蹦床,尽管你可以而且应该使它比一般的PEP342简单得多。在你屈服于召唤你的方法。因此你不能屈服于常规1。你只是屈服。您可以让例程1调用例程2,例程2可以生成并返回例程1。在
相关问题 更多 >
编程相关推荐