Python 中 async 和 await 关键字的作用?

推荐答案

在 Python 中,asyncawait 关键字用于定义和操作异步函数。它们的主要作用是简化异步编程,使得编写异步代码更加直观和易于理解。

  • async 用于定义一个异步函数(也称为协程)。异步函数在执行时不会阻塞主线程,而是会在遇到 await 时暂停执行,直到等待的操作完成。
  • await 用于暂停异步函数的执行,直到等待的异步操作完成。它只能在 async 函数中使用。

本题详细解读

async 关键字

async 关键字用于定义一个异步函数。异步函数与普通函数的区别在于,异步函数在执行时不会阻塞主线程,而是会在遇到 await 时暂停执行,直到等待的操作完成。

在上面的例子中,my_async_function 是一个异步函数。当调用这个函数时,它会立即返回一个协程对象,而不是立即执行函数体。协程对象需要通过事件循环来调度执行。

await 关键字

await 关键字用于暂停异步函数的执行,直到等待的异步操作完成。它只能在 async 函数中使用。

在上面的例子中,await asyncio.sleep(1) 会暂停 my_async_function 的执行,直到 asyncio.sleep(1) 完成。在此期间,事件循环可以调度其他任务执行。

异步编程的优势

使用 asyncawait 可以编写非阻塞的代码,使得程序在等待 I/O 操作(如网络请求、文件读写等)时不会阻塞主线程,从而提高程序的并发性能。

-- -------------------- ---- -------
------ -------

----- --- -------------
    --------------- ---------
    ----- ----------------  - ------
    ----------- ---------

----- --- -------
    ----- ---------------------------- -------------

-------------------

在上面的例子中,fetch_data 函数模拟了一个网络请求,main 函数并发地执行了两个 fetch_data 任务。由于使用了 asyncawait,这两个任务可以并发执行,而不会阻塞主线程。

总结

  • async 用于定义异步函数,使得函数可以在遇到 await 时暂停执行。
  • await 用于暂停异步函数的执行,直到等待的异步操作完成。
  • 使用 asyncawait 可以编写非阻塞的代码,提高程序的并发性能。
纠错
反馈