本文将和大家一起探讨python的多协程并发编程(上篇),使用内置基本库asyncio来实现并发,先通过官方来简单使用这个模块。先打好基础,能够有个基本的用法与认知,后续文章,我们再进行详细使用。
本文为python并发编程的第十篇,上一篇文章地址如下:
python:并发编程(九)_Lion King的博客-CSDN博客
下一篇文章地址如下:
(暂无)
官方文档:asyncio --- 异步 I/O — Python 3.11.4 文档
asyncio
提供了事件循环(Event Loop)作为协程的调度器和执行者。事件循环负责处理协程的调度和执行,并处理事件、回调函数等。以下是关于 asyncio
事件循环的一些重要概念和用法:
(1)获取事件循环对象:可以使用 asyncio.get_event_loop()
获取默认的事件循环对象,或者使用 asyncio.new_event_loop()
创建一个新的事件循环对象。
(2)设置默认事件循环:可以使用 asyncio.set_event_loop()
设置默认的事件循环对象。
(3)运行事件循环:可以使用 loop.run_forever()
方法以无限循环的方式运行事件循环,直到调用 loop.stop()
。
(4)执行协程:可以使用 loop.run_until_complete()
方法执行一个协程或任务,并等待其完成。
(5)停止事件循环:可以使用 loop.stop()
停止事件循环的运行。
(6)调度协程:可以使用 loop.create_task()
方法创建一个任务,并将其添加到事件循环中运行。
(7)定时调度:可以使用 loop.call_later()
或 loop.call_at()
方法在指定的时间点调度回调函数的执行。
(8)异常处理:可以使用 try-except
块来捕获和处理在协程执行过程中抛出的异常。
以下是一个简单的示例代码,演示了如何使用 asyncio
的事件循环:
import asyncio
# 定义一个协程
async def my_coroutine():
print("Coroutine is running")
await asyncio.sleep(1) # 模拟耗时操作
print("Coroutine is done")
# 创建事件循环
loop = asyncio.get_event_loop()
# 将协程添加到事件循环中
task = loop.create_task(my_coroutine())
# 运行事件循环直到任务完成
loop.run_until_complete(task)
# 关闭事件循环
loop.close()
以上代码创建了一个简单的协程 my_coroutine()
,并将其添加到事件循环中运行。loop.run_until_complete(task)
运行事件循环直到任务完成,然后关闭事件循环。
通过使用 asyncio
的事件循环,可以方便地管理和调度协程的执行,实现异步操作和并发编程。