利用asyncio的event loop,编写和调度协程

coroutine [,kəuru:'ti:n] n. 协程

Simple coroutine(调用1个协程)

import asyncio

async def say(what, when):
await asyncio.sleep(when)
print(what) loop = asyncio.get_event_loop()
loop.run_until_complete(say('hello world', 1)) # 使用run_until_complete()方法,在协程完成后中断event loop。
loop.close()

Creating tasks(调用多个协程)

import asyncio

async def say(what, when):
await asyncio.sleep(when)
print(what) loop = asyncio.get_event_loop() loop.create_task(say('first hello', 2))
loop.create_task(say('second hello', 1)) loop.run_forever() # 使用run_forever()方法,协程会一直运行,不会中断event loop
loop.close()

Stopping the loop

import asyncio

async def say(what, when):
await asyncio.sleep(when)
print(what) async def stop_after(loop, when):
await asyncio.sleep(when)
loop.stop() # 中断event loop loop = asyncio.get_event_loop() loop.create_task(say('first hello', 2))
loop.create_task(say('second hello', 1))
loop.create_task(say('third hello', 4))
loop.create_task(stop_after(loop, 3)) loop.run_forever()
loop.close()
# out:
second hello
first hello
Task was destroyed but it is pending!
task: <Task pending coro=<say() done, defined at e03.py:5> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0x7fed59595a68>()]>> # 在执行2个任务后,中断event loop,'third hello‘任务由于延迟时间4秒,未能执行。

最新文章

  1. solr 查询 实例分析
  2. 15天玩转redis —— 第六篇 有序集合类型
  3. Azure File
  4. android 事件监听
  5. [py]os.walk爬目录&sys.argv灵活获取参数
  6. AJAX,JSON用户名校验
  7. hdu-------(1848)Fibonacci again and again(sg函数版的尼姆博弈)
  8. JS类型(2)_JS学习笔记(2016.10.02)
  9. [WPF]Binding的Converter和Validator
  10. eslint常见规则总结
  11. MySQL备份常用命令总结
  12. 超级账本fabric原理之gossip详解
  13. 后台跨域(CORS)
  14. 一些你可能不熟悉的JS知识点总结
  15. PHP 服务器及TP5框架遇到的几个错误
  16. C#--整型与字节数组byte[]之间的转换
  17. WCF兼容WebAPI输出Json格式数据,从此WCF一举两得
  18. msf客户端渗透(一):payload利用简单示范
  19. Java并发编程(2) AbstractQueuedSynchronizer的内部结构
  20. 改变手机浏览器(iPhone/Android)上文本输入框的默认弹出键盘

热门文章

  1. WPF Hidden和Collapsed
  2. 详解Oracle hints PQ_DISTRIBUTE
  3. Heap — 20181120
  4. kvm 虚拟网络命令操作
  5. 企业的VI设计需要包含哪些元素
  6. how to use Sqoop to import/ export data
  7. 使用nodejs 访问mongodb
  8. C++ 编译器
  9. Jersey统一异常处理
  10. s中的闭包