我的Python版本是3.6.1。
我编写了一些使用Python asyncio实现消费者生产者模型的内容。但它并没有按照预期工作。
虽然创建了四个事件,但没有任何输出被打印出来。
async def consumer(queue, id):
while True:
val = await queue.get()
print('{} get a val: {}'.format(id, val))
await asyncio.sleep(1)
async def producer(queue, id):
for i in range(5):
val = random.randint(1, 10)
await queue.put(val)
print('{} put a val: {}'.format(id, val))
await asyncio.sleep(1)
async def main():
queue = asyncio.Queue()
consumer_1 = asyncio.ensure_future(consumer(queue, 'consumer_1'))
consumer_2 = asyncio.ensure_future(consumer(queue, 'consumer_2'))
producer_1 = asyncio.ensure_future(producer(queue, 'producer_1'))
producer_2 = asyncio.ensure_future(producer(queue, 'producer_2'))
await asyncio.sleep(10)
consumer_1.cancel()
consumer_2.cancel()
await asyncio.gather(consumer_1, consumer_2, producer_1, producer_2, return_exceptions=True)
loop = asyncio.get_event_loop()
tasks = [asyncio.ensure_future(main())]
loop.run_until_complete(asyncio.wait(tasks))
loop.close()
请问您能帮我纠正一下吗?
这段内容与IT技术无关。
multiprocessing.Queue
而不是asyncio.Queue
https://docs.python.org/3.7/library/multiprocessing.html#multiprocessing.Queue。 - abdusco