(二)asyncio的简单使用,python异步高效处理数据,asyncio.get_event_loop(),loop.run_until_complete(main()),loop.close()

发布时间 2023-04-26 15:16:30作者: 高颜值的殺生丸

Asyncio 是一个基于事件循环的异步I/O框架,它提供了高效的协程实现,能够轻松地编写高并发的Python程序。Asyncio 在 Python 3.4 中首次引入,它的核心是事件循环(Event Loop),通过协程实现异步编程,避免了传统线程模型中的锁和线程切换开销,提高了程序的并发性能。

Asyncio的工作原理如下:

  1. 创建一个事件循环(Event Loop)对象
  2. 编写协程函数,使用关键字 async 定义
  3. 将协程函数封装为任务(Task)对象
  4. 将任务对象添加到事件循环中
  5. 启动事件循环,等待协程函数执行完成

下面是一个使用Asyncio实现异步的框架程序的示例,它创建了一个任务列表,列表中有100个任务,每个任务返回一个数字,数字从0开始,使用 run_until_complete 方法等待所有任务完成:

import asyncio

async def task(n):
    await asyncio.sleep(1)  # 模拟耗时操作
    return n

async def main():
    tasks = [asyncio.create_task(task(i)) for i in range(100)]
    results = await asyncio.gather(*tasks)
    print(results)

if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())
    loop.close()

  

在这个示例中,我们首先定义了一个异步协程函数 task,它模拟了一个耗时的操作,然后我们定义了一个 main 函数,它创建了一个任务列表,包含了100个 task 协程函数的任务,并通过 asyncio.gather 方法等待所有任务完成,并将结果打印出来。

最后,我们使用 asyncio.get_event_loop 方法获取事件循环对象,使用 run_until_complete 方法等待 main 函数执行完成,关闭事件循环。