yield和send写一个多任务协作异步IO的协程的demo
时间: 2023-11-28 12:48:48 浏览: 72
好的,这是一个使用 yield 和 send 实现多任务协作异步 IO 的协程的示例代码:
```python
import time
def coroutine():
while True:
value = yield
print("[Coroutine] received value:", value)
time.sleep(1)
def main():
c1 = coroutine()
c2 = coroutine()
next(c1)
next(c2)
for i in range(5):
print("[Main] sending value {} to coroutine 1".format(i))
c1.send(i)
print("[Main] sending value {} to coroutine 2".format(i*10))
c2.send(i*10)
c1.close()
c2.close()
if __name__ == "__main__":
main()
```
在这个例子中,使用两个协程来处理异步任务。在主函数中,我们通过 `next()` 方法启动两个协程,然后通过 `send()` 方法向协程发送数据。协程接收到数据后会进行处理。在这个例子中,每个协程只是简单地打印出接收到的值,并且等待一秒钟,以模拟处理时间。注意,我们在发送数据之前需要调用 `next()` 方法来启动协程。在程序的末尾,我们使用 `close()` 方法关闭协程。
希望这个示例可以帮助您理解如何使用 yield 和 send 实现协程。
阅读全文