python 协程锁
时间: 2023-11-08 14:04:34 浏览: 192
在 Python 中,可以使用协程锁(CoroutineLock)来协调协程之间的访问和操作。协程锁是通过 asyncio 模块中的 Lock 类实现的。
下面是一个示例代码,展示了如何使用协程锁:
```python
import asyncio
async def coroutine(lock):
# 获取协程锁
await lock.acquire()
try:
# 执行一些需要同步的操作
print("Acquired lock")
await asyncio.sleep(1)
finally:
# 释放协程锁
lock.release()
print("Released lock")
async def main():
# 创建一个协程锁
lock = asyncio.Lock()
# 创建多个协程任务
tasks = [coroutine(lock) for _ in range(3)]
# 并发执行协程任务
await asyncio.gather(*tasks)
# 运行主程序
asyncio.run(main())
```
在上面的示例中,我们首先定义了一个协程函数 coroutine,该函数接受一个协程锁作为参数。在 coroutine 函数内部,我们首先使用 await lock.acquire() 获取协程锁,然后执行一些需要同步的操作,最后使用 lock.release() 释放协程锁。
在主程序中,我们创建了一个协程锁 lock,并创建了多个协程任务来执行 coroutine 函数。使用 asyncio.gather 来并发执行这些协程任务。
阅读全文