(一)asyncio的基本使用框架,python高效处理数据,asyncio.gather(),asyncio. create_task(),asyncio.run(main())
asyncio
是 Python 3.4 引入的标准库,是一个基于事件循环的异步 I/O 并发库。它提供了一种协作式的多任务处理方式,使得我们能够在一个线程中并发处理多个 I/O 操作。它通过将 I/O 操作转化为异步的非阻塞调用,从而实现了高效的并发处理。其原理如下:
-
定义协程(coroutine):使用关键字
async def
定义一个协程函数,它是一种特殊的函数,可以暂停执行并在稍后恢复执行。 -
创建一个事件循环(event loop):事件循环是一个无限循环,它不断地等待事件的发生并处理这些事件。在事件循环中,我们可以注册协程、定时器和回调函数等事件。
-
启动事件循环:调用事件循环的
run_until_complete()
方法,将协程注册到事件循环中并启动事件循环。 -
在协程中使用
await
:使用关键字await
可以暂停当前协程的执行,等待另一个协程或异步操作完成后再恢复执行。
下面是一个使用 asyncio
实现异步框架程序的示例,创建一个任务列表,列表中有 100 个任务,每个任务是返回一个数字,数字从 0 开始。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import asyncio async def get_number(n): await asyncio.sleep( 1 ) # 模拟耗时操作 return n async def main(): tasks = [] for i in range ( 100 ): tasks.append(asyncio.create_task(get_number(i))) numbers = await asyncio.gather( * tasks) print (numbers) if __name__ = = '__main__' : asyncio.run(main()) |
上述代码中,我们定义了一个 get_number()
协程函数,它模拟一个耗时操作并返回一个数字。然后我们在 main()
协程中创建了一个包含 100 个任务的任务列表,每个任务都是调用 get_number()
函数。最后,我们使用 asyncio.gather()
方法等待所有任务完成,并打印出所有数字。在最后,我们使用 asyncio.run()
函数来启动事件循环。这个示例程序使用 asyncio
实现了一个简单的异步框架,可以在一个线程中同时处理多个 I/O 操作,提高程序的并发能力。
多思考也是一种努力,做出正确的分析和选择,因为我们的时间和精力都有限,所以把时间花在更有价值的地方。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2020-04-26 实体识别中,或序列标注任务中的维特比Viterbi解码