python协程
时间: 2023-06-21 10:14:43 浏览: 132
协程(Coroutine)是一种用户态的轻量级线程,它可以在单个线程中实现多任务并发处理。Python中的协程通过生成器(generator)实现,使用yield语句来实现协程的暂停和恢复操作。
在Python 3.5之后,Python引入了async/await关键字,使得协程的使用更加方便和简洁。
下面是一个使用yield实现协程的示例:
```python
def coroutine():
print("coroutine started")
while True:
value = yield
print("Received value: ", value)
c = coroutine()
next(c) # 启动协程
c.send(1) # 发送值,并打印接收到的值
c.send(2)
```
输出:
```
coroutine started
Received value: 1
Received value: 2
```
在上面的代码中,使用yield语句实现了协程的暂停和恢复操作。在调用`c.send()`方法时,会将值发送给协程,并从yield语句处恢复协程的执行。协程会处理接收到的值,并在下一个yield语句处暂停,等待下一次发送。
除了使用yield语句来实现协程外,Python 3.5之后还可以使用async/await关键字来定义协程。使用async/await关键字定义的协程更加简洁和易于理解。下面是一个使用async/await关键字实现的协程示例:
```python
async def coroutine():
print("coroutine started")
while True:
value = await asyncio.sleep(1)
print("Received value: ", value)
asyncio.run(coroutine())
```
在上面的代码中,使用async/await关键字定义了一个协程。使用`asyncio.sleep()`函数来实现协程的暂停操作,并在下一次事件循环时恢复协程的执行。使用`asyncio.run()`函数来运行协程。
总的来说,协程是一种非常有用的并发编程技术,可以在单个线程中实现高并发的处理。在Python中,可以使用生成器和async/await关键字来实现协程。
阅读全文