【发布时间】:2017-12-11 03:20:29
【问题描述】:
等待时如何继续下一个循环?例如:
async def get_message():
# async get message from queue
return message
async process_message(message):
# make some changes on message
return message
async def deal_with_message(message):
# async update some network resource with given message
async def main():
while True:
message = await get_message()
message = await process_message(message)
await deal_with_message(message)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
如何使while True 循环并发?如果它正在等待deal_with_message,它可以进入下一个循环并运行get_message?
已编辑
我想我找到了解决办法:
async def main():
asyncio.ensure_future(main())
message = await get_message()
message = await process_message(message)
await deal_with_message(message)
loop = asyncio.get_event_loop()
asyncio.ensure_future(main())
loop.run_forever()
【问题讨论】:
-
虽然我发现它按我的预期工作,但我认为它不是一种pythonical方式,有没有更好的方法?这个解决方案和nodejs中的
process.nextTick()是一样的。
标签: python concurrency python-asyncio event-loop