异步编程是 Python 中一个非常有用的特性,它可以帮助你编写高性能的网络应用和并发代码。在这个教程中,我们将介绍 Python 的 asyncio 库,并展示如何使用它来处理并发任务。

异步编程基础

异步编程允许程序在等待某些操作(如 I/O 操作)完成时继续执行其他任务。在 Python 中,asyncio 是一个用于编写并发代码的库。

异步函数

asyncio 中,函数通过在定义时使用 async 关键字来声明为异步函数。异步函数可以包含 await 表达式,用于等待其他异步操作完成。

async def main():
    print('Hello')
    await asyncio.sleep(1)
    print('World!')

# 运行异步函数
asyncio.run(main())

事件循环

事件循环是 asyncio 的核心,它负责调度异步任务并处理 I/O 事件。默认情况下,asyncio 使用 Selector 事件循环。

import asyncio

async def main():
    print('Hello')
    await asyncio.sleep(1)
    print('World!')

# 创建事件循环并运行异步函数
loop = asyncio.get_event_loop()
loop.run_until_complete(main())

实际应用

异步编程在处理网络应用时非常有用。以下是一个使用 asyncioaiohttp 库的简单例子:

import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    async with aiohttp.ClientSession() as session:
        html = await fetch(session, 'https://www.example.com')
        print(html)

# 运行异步函数
asyncio.run(main())

扩展阅读

如果你想要更深入地了解 asyncio,可以阅读以下资源:

asyncio logo