Python;异步异步用于陈述



以下是代码块的块:

async def handle_client(process):
    process.stdout.write('Enter numbers one per line, or EOF when done:n')
    total = 0
    try:
        async for line in process.stdin:
            line = line.rstrip('n')
            if line:
                try:
                    total += int(line)
                except ValueError:
                    process.stderr.write('Invalid number: %sn' % line)
    except asyncssh.BreakReceived:
        pass

def之前有一个async关键字,但是for循环之前也有一个关键字。在此处查看Asyncio的文档时:https://docs.python.org/3/library/asyncio-task.html,我看不到此async关键字的任何类似用途。

那么,关键字在此上下文中有什么作用?

async for ... in ...构造允许您循环循环"异步峰",如评论中所述,详细说明在PEP 492

在您的示例情况下,async for循环等待STDIN输入,同时不阻止其他异步环任务。如果您要使用for循环,这将是阻止操作,并且您输入输入的循环中没有其他任务。


获得另一个示例,请想象MySQL客户端从数据库中获取X行。AIO-MYSQL示例

async for row in conn.execute("SELECT * FROM table;"):
    print(row)

这将获取单行,并且在等待IO操作(MySQL查询)时,它并没有阻止异步环上其他任务的执行。

然后,您可以使用所获得的行数据进行操作。

最新更新