那写一个异步fifo代码吧
时间: 2024-05-15 08:12:23 浏览: 134
好的,以下是一个基于Python asyncio的异步fifo代码示例:
```python
import asyncio
class AsyncFifo:
def __init__(self):
self._queue = asyncio.Queue()
async def put(self, item):
await self._queue.put(item)
async def get(self):
return await self._queue.get()
```
使用示例:
```python
async def producer(fifo):
for i in range(10):
await fifo.put(i)
# indicate the end of the stream
await fifo.put(None)
async def consumer(fifo):
while True:
item = await fifo.get()
if item is None:
break
print(f"Consumed: {item}")
async def main():
fifo = AsyncFifo()
await asyncio.gather(
producer(fifo),
consumer(fifo),
)
asyncio.run(main())
```
在上面的示例中,我们首先定义了一个AsyncFifo类,它基于asyncio.Queue实现了异步的FIFO队列。然后我们定义了两个协程,一个是生产者,它向队列中不断放入数据;另一个是消费者,它从队列中不断取出数据并进行处理。最后,我们使用asyncio.gather()函数并发地运行这两个协程,并在main()函数中运行整个程序。
阅读全文