【发布时间】:2016-08-07 11:11:55
【问题描述】:
我正在(龙卷风)网络服务器上运行一个长时间的 CPU 密集型任务。我不想将此任务卸载到线程(现在)。我如何在这个长时间运行的任务期间正确地“让出”控制到事件循环,以便仍然提供 Web 请求(注意:我在这里使用“让出”的协作调度意义,而不是生成器意义, 或 python 关键字yield)。
我的建议是做一个await asyncio.sleep(0),但是可以保证这不只是作为一个NOP实现的吗?我一直在寻找 asyncio 库中的专用函数来执行此操作,但到目前为止一直找不到。
示例(python 3.5 async/await 风格):
async def long_task():
for i in range(LARGE_NUMBER):
do_something(i)
if i % 100 == 0:
await asyncio.sleep(0)
【问题讨论】:
标签: python-3.x python-3.5 python-asyncio