Python -asyncio笔记
来源:互联网 发布:php全栈框架 编辑:程序博客网 时间:2024/06/06 04:03
asyncio
事件循环是asyncio提供的核心运行机制
loop = asyncio.get_event_loop() # 获取一个事件循环(主线程才可以调用)task = loop.create_task(task) # 创建一个任务loop.run_until_complete(task) # 运行任务
开始一个协程
import asyncioasync def coroutine(): print('in coroutine')event_loop = asyncio.get_event_loop()try: print('starting coroutine') coro = coroutine() print('entering event loop') event_loop.run_until_complete(coro)finally: print('closing event loop') event_loop.close()
从协程返回值
import asyncioasync def coroutine(): print('in coroutine') return 'result'event_loop = asyncio.get_event_loop()try: return_value = event_loop.run_until_complete(coroutine()) print('it returned: {}'.format(return_value))finally: event_loop.close()第一步是获取事件的引用,可以使用默认的循环类型,或者可以实例化特定的循环类型。在这个例子中,用默认循环,run_until_complete()方法使用coroutine对象启动循环,并在协同程序退出时停止循环
协程传参
一个协同程序可以启动另一个协同程序,并等待结果。 这使得更容易将任务分解成可重用的部分。 以下示例有两个阶段必须按顺序执行,但可以与其他操作同时运行。
import asyncio
async def outer(): print('in outer') print('waiting for result1') result1 = await phase1() print('waiting for result2') result2 = await phase2(result1) return (result1, result2)async def phase1(): print('in phase1') return 'result1'async def phase2(arg): print('in phase2') return 'result2 derived from {}'.format(arg)event_loop = asyncio.get_event_loop()try: return_value = event_loop.run_until_complete(outer()) print('return_value:{}'.format(return_value))finally: event_loop.close()
下面这两个都是放个多个协程
asyncio.gather() # 有区别asyncio.wait()coros = [do_some_work(loop, 1), do_some_work(loop, 3)]loop.run_until_complete(asyncio.wait(cors))loop.run_until_complete(asyncio.gather(*cors))
阅读全文
0 0
- Python -asyncio笔记
- python asyncio
- Python asyncio文档翻译--asyncio.Future
- 【asyncio】python异步IO
- Python标准模块--asyncio
- Python asyncio文档翻译
- python asyncio学习记录
- 【Python】asyncio异步爬虫
- python asyncio模块
- Python asyncio使用范例
- python学习——asyncio
- python asyncio uvloop socket server
- asyncio
- asyncio
- asyncio
- python:利用asyncio进行快速抓取
- python的异步IO模块asyncio学习
- python的异步IO(asyncio aiohttp)
- 说出ArrayList,Vector,LinkedList的存储性能和特性。
- 一分钟了解负载均衡
- 个人笔记
- Pyhton 学习笔记之 hello world
- Linux中I/O steam中的缓冲解析
- Python -asyncio笔记
- Spring Boot参考教程(一) SpringBoot概述及Hello World
- bzoj1001 [BeiJing2006]狼抓兔子
- 小红伞和NOD32基于源码的免杀经验总结
- bzoj5029 贴小广告
- bzoj2875 [Noi2012]随机数生成器
- HashMap和Hashtable的区别
- bzoj3211 花神游历各国
- bzoj2257 [Jsoi2009]瓶子和燃料