怎么在python3协程中使用asyncio

  介绍

怎么在python3协程中使用asyncio ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Python主要用来做什么

Python主要应用于:1,网络开发;2、数据科学研究;3,网络爬虫;4、嵌入式应用开发,5日游戏开发;6桌面应用开发。

<强> 1,asyncio的使用

(1) event_loop事件循环:程序开启一个无限的循环,程序员会把一些函数注册到事件循环上。当满足事件发生的时候,调用相应的协程函数。

(2)协同程序协程:协程对象,指一个使用异步关键字定义的函数,它的调用不会立即执行函数,而是会返回一个协程对象。协程对象需要注册到事件循环,由事件循环调用。

(3)任务任务:一个协程对象就是一个原生可以挂起的函数,任务则是对协程进一步封装,其中包含任务的各种状态。

(4)未来:代表将来执行或没有执行的任务的结果。它和任务上没有本质的区别

(5)异步/等待关键字:python3.5用于定义协程的关键字,异步定义一个协程,等待用于挂起阻塞的异步调用接口。

<强> 2,实例

 import  asyncio
  ,
  import 时间
  ,
  ,
  ,
  你=,λ:time.time ()
  ,
  async  def  do_some_work (x):
  ,
  ,,,print(& # 39;等待:{}& # 39;.format (x))
  ,
  ,
  ,
  ,,,await  asyncio.sleep (x)
  ,
  ,,,return  & # 39; Done  after  {} & # 39; .format (x)
  ,
  ,
  ,
  async  def  main ():
  ,
  ,,,coroutine1 =, do_some_work (1)
  ,
  ,,,coroutine2 =, do_some_work (5)
  ,
  ,,,coroutine3 =, do_some_work (3)
  ,
  ,
  ,
  ,,,tasks =, (
  ,
  ,,,,,,,asyncio.ensure_future (coroutine1),
  ,
  ,,,,,,,asyncio.ensure_future (coroutine2),
  ,
  ,,,,,,,asyncio.ensure_future (coroutine3)
  ,
  ,,,)
  ,
  ,,,,,pending =, await  asyncio.wait(任务)
  ,
  ,,,for  task 拷贝完成:
  ,
  ,,,,,,,印刷(& # 39;Task  ret: & # 39;,, task.result ())
  ,
  ,
  ,
  start 现在=,()
  ,
  ,
  ,
  时间=loop  asyncio.get_event_loop ()
  ,
  时间=task  asyncio.ensure_future (main ())
  ,
  试一试:
  ,
  ,,,loop.run_until_complete(任务)
  ,
  ,,,print(& # 39;时间:,& # 39;,,现在(),背后,开始)
  ,
  except  KeyboardInterrupt  as  e:
  ,
  ,,,print (asyncio.Task.all_tasks ())
  ,
  ,,,print (asyncio.gather (* asyncio.Task.all_tasks ()) .cancel ())
  ,
  ,,,loop.stop ()
  ,
  ,,,loop.run_forever ()
  ,
  最后:
  ,
  ,,,loop.close () 

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

怎么在python3协程中使用asyncio