随笔分类 - Python协程_asyncio_异步
摘要:python中操作mysql连接、操作、断开都是网络IO #安装支持异步aiomysql的模块 pip3 install aiomysql async def execute(): # 网络IO操作,连接数据库,遇到IO切换任务 conn = await aiomysql.connect('host
阅读全文
摘要:在使用Python代码操作redis时候,连接、操作、断开都是网络IO #安装支持异步redis的模块 pip3 install aioredis async def execute(address, password): # 网络IO操作:创建redis连接 redis = await aiore
阅读全文
摘要:uvloop是asyncio的事件循环的替代方案,性能高于默认asyncio的事件循环的效率,相当于提升两倍,效率可以比肩Go pip3 install uvloop import asyncio import uvloop # 使用uvloop替代原因asyncio loop asyncio.se
阅读全文
摘要:对象通过定义__aenter__()和__aexit__()方法对async with语句进行控制 class AsyncConetxtManager: def __init__(self): self.conn = '' async def do_something(self): return '
阅读全文
摘要:异步迭代器 实现了__aiter__()和__anext__()方法的对象 __anext__()必须返回一个awaitable对象 async for会处理异步迭代器的__anext__()方法返回的可等待对象,直到引发StopAsyncIteration异常 异步可迭代对象 可在async fo
阅读全文
摘要:import asyncio import requests async def download_image(url): # 发送请求下载图片,遇到网络下载图片时候的IO请求,自动切换其他任务 print('开始下载', url) loop = asyncio.get_event_loop() #
阅读全文
摘要:asyncio.Future对象 Future是Task类的基类 Task对象内部await结果的处理是基于Future对象来的 async def main(): # 获取当前事件循环 loop = asyncio.get_running_loop() # 创建一个任务(Future对象) fut
阅读全文
摘要:Task对象 用于调度或并发协程对象 在事件循环中可以添加多个任务 创建task对象三种方式 创建task对象可以让协程加入事件循环中等待被调度执行 3.7版本之后加入asyncio.create_task方式 在之前的版本可以使用低层级的asyncio.ensure_future 不建议手动实例化
阅读全文
摘要:事件循环:可以理解成一个死循环,去检测并执行某些代码 import asyncio # 去生成或者获取一个事件循环 loop = asyncio.get_event_loop() # 将任务放到事件循环 loop.run_until_complete(协程对象) 协程函数:定义函数的时候使用 asy
阅读全文
