python如何使用等待关键字来等另外一个协程

  介绍

这篇文章主要为大家展示了python如何使用等待关键字来等另外一个协程,内容简而易懂,希望大家可以学习一下,学习完之后肯定会有收获的,下面让小编带大家一起来看看吧。

一个协程里可以启动另外一个协程,并等待它完成返回结果,采用等待关键字,

<强>例子如下:

进口asyncio
  
  异步def外():
  print(& # 39;外# 39;)
  打印(& # 39;等待result1& # 39;)
  result1=等待phase1编写此表达式()
  打印(& # 39;等待result2& # 39;)
  result2=等待phase2 (result1)编写此表达式
  返回(result1,编写此表达式result2)
  
  异步def phase1 ():
  print (& # 39; phase1& # 39;)
  返回& # 39;result1& # 39;
  
  异步def phase2 (arg):
  print (& # 39; phase2& # 39;)
  返回& # 39;result2源自{}& # 39;.format (arg)
  
  event_loop=asyncio.get_event_loop ()
  试一试:
  return_value=https://www.yisu.com/zixun/event_loop.run_until_complete(外())
  print(返回值:{! r}’.format (return_value))
  最后:
  event_loop.close ()
  
  输出结果如下:
  在外层
  等待result1
  在phase1
  等待result2
  在phase2
  返回值:(result1”编写此表达式,result2源自result1”编写此表达式)

等待关键字添加了一个新的协程到循环里,而不需要明确地添加协程到这个事件循环里。

<强> python里使用条件对象来唤醒指定数量的协程

在asyncio库里,定义条件对象,它的行为与事件事件有点像,区别是事件是通知所有对象,条件对象可以指定一定数量的协程被通知,它是通过函数通知()来实现的,如果参数里放2,就是通知两个协程,例子如下:

进口asyncio
  
  异步def消费(条件下,n):
  与等待条件:
  打印(& # 39;消费者{}等待# 39;.format (n))
  等待condition.wait ()
  打印(& # 39;消费者{}触发# 39;.format (n))
  打印(& # 39;结束消费者{}& # 39;.format (n))
  
  异步def manipulate_condition(条件):
  print (& # 39; manipulate_condition& # 39;开始)
  
  #暂停让消费者开始
  等待asyncio.sleep (0.1)
  
  我的范围(1、3):
  与等待条件:
  打印(& # 39;通知{}消费者# 39;.format(我))
  condition.notify (n=我)
  等待asyncio.sleep (0.1)
  
  与等待条件:
  打印(& # 39;剩余通知消费者,)
  condition.notify_all ()
  
  打印(& # 39;manipulate_condition& # 39;结束)
  
  异步def主要(循环):
  #创建一个条件
  条件=asyncio.Condition ()
  
  #设置任务看条件
  消费者=[
  消费者(条件,我)
  因为我在范围(5)
  ]
  
  #计划任务来操纵条件变量
  loop.create_task (manipulate_condition(条件))
  
  #等待消费者要做
  等待asyncio.wait(消费者)
  
  event_loop=asyncio.get_event_loop ()
  试一试:
  结果=event_loop.run_until_complete(主要(event_loop))
  最后:
  event_loop.close () 

结果输出如下:

开始manipulate_condition
  消费者2是等待
  消费者3是等待
  消费者4是等待
  消费1是等待
  消费者0是等待
  通知1消费者
  消费者2触发
  结束消费者2
  通知2消费者
  引发消费者3
  结束消费者3
  消费者4触发
  结束消费者4
  通知剩余的消费者
  结束manipulate_condition
  消费1触发
  结束消费1
  消费者0触发
  结束消费者0 

以上就是关于python如何使用等待关键字来等另外一个协程的内容,如果你们有学习到知识或者技能,可以把它分享出去让更多的人看的到。

python如何使用等待关键字来等另外一个协程