0
0

PEP 492 新的异步编程语法

夏小草 发表于 2015年04月20日 10:48 | Hits: 1690

PEP 492 - Coroutines with async and await syntax,是一个可能在Python3.5 或Python3.6 中实现的新的'协程'式的异步编程模式。这次的修改将引入两个新的关键字,async 和 await,其用法与C# 中的async / await 非常相似。

Python3.4 中, 已经添加了asyncio,用于简化异步编程。async / await 与asyncio 使用的是同样的机制,依然是基于generator 的所谓'explicit coroutine' 模式。

新的'协程'语法

async def read_data(db):
    data = await db.fetch('SELECT ...')
    ...

为了方便异步下的资源管理,PEP 492 还引入了 async with 语法, async with 用于 AsyncContextManager 对象:

class AsyncContextManager:
    async def __aenter__(self):
        await log('entering context')

    async def __aexit__(self, exc_type, exc, tb):
        await log('exiting context')

 使用上和with语法比较接近:

async def commit(session, data):
    ...

    async with session.transaction():
        ...
        await session.update(data)
        ...

原文链接: http://dongliu.net/post/622455

0     0

我要给这篇文章打分:

可以不填写评论, 而只是打分. 如果发表评论, 你可以给的分值是-5到+5, 否则, 你只能评-1, +1两种分数. 你的评论可能需要审核.

评价列表(0)