python用生成器实现协程

来源:千锋教育
发布时间:2023-11-13 11:05:57
分享

python用生成器实现协程

1、方法

我们通过“生产者-消费者”模型来研究协程的应用。生产者产生消息后直接跳转到消费者开始执行,消费者完成执行后切换回生产者继续生产。

2、实例

#-*-coding:utf8-*-

defconsumer():

r=''

whileTrue:

n=yieldr

ifnotn:

return

print('[CONSUMER]Consuming%s...'%n)

r='200OK'

defproducer(c):

#启动生成器

c.send(None)

n=0

whilen<5:

n=n+1

print('[PRODUCER]Producing%s...'%n)

r=c.send(n)

print('[PRODUCER]Consumerreturn:%s'%r)

c.close()

if__name__=='__main__':

c=consumer()

producer(c)

send(msg)和next()的区别在于send可以将参数传递给yield表达式,此时传递的参数作为yield表达式的值,yield的参数返回给调用者的值。

以上就是python用生成器实现协程的方法,希望能对大家有所帮助,更多Python学习教程请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python类方法的注意点 python类方法的注意点1、@classmethod必须在方法上面。2、第一个cls必须有,指的是类对象本身。3、在类方法中访问实例属性和实例方法会导致错误。4、当子类继承父类方法时,cls是子类对
  • python实例方法的使用注意 python实例方法的使用注意1、实例方法是从属于实例对象的方法,定义实例方法时,第一个参数必须为self。self指当前的实例对象。2、调用实例方法是,不需要也不能给self传值,self由解释器自
  • python模块的name属性 python模块的name属性一个模块被另一个程序第一次引入时,其主程序将运行。1、如果想在模块被引入时,模块中的某一程序块不执行,可以用name属性来使该程序块仅在该模块自身运行时执行。2、每个模块
  • python序列解包的使用 python序列解包的使用1、序列解包可用于元组、列表、字典。序列解包可以让我们更方便地赋予多个变量。2、字典中使用序列解包时,默认情况下是键的操作。如果需要操作键值,则需要使用items(),如果需
  • pythonconftest如何使用? python中conftest如何使用?1、conftest的概念conftest是pytest进阶中的高级应用,最近正好用到这一块儿,研究之后,向大家分享该高级应用。2、使用步骤(1)conftes
  • pythonif嵌套命令如何理解? python中if嵌套命令如何理解?一、嵌套命令计算机执行的顺序缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令。1、先给score赋值;2、因为if和else是只能留一个的互