在事件循环中使用async with语法来获取锁。
示例代码:
import asyncio
async def my_coroutine(lock):
async with lock:
# 执行任务
print("任务开始执行...")
await asyncio.sleep(1)
print("任务执行完毕。")
async def main():
lock = asyncio.Lock()
# 创建任务列表
coroutines = [
my_coroutine(lock),
my_coroutine(lock),
my_coroutine(lock)
]
# 运行任务
await asyncio.gather(*coroutines)
# 运行主程序
asyncio.run(main())
在上面的示例代码中,我们使用了async with来获取锁,并确保在任务完成后自动释放锁。这样,我们就可以避免在事件循环结束时获取锁时出现问题。