Cla*_*ude 8 python-3.x python-asyncio python-3.5
我正在(龙卷风)网络服务器上运行一个长时间的 CPU 密集型任务。我不想将此任务卸载到线程(目前)。在这个长时间运行的任务中,如何正确地“yield”控制事件循环,以便网络请求仍然得到服务(注意:我在这里以合作调度的方式使用“yield”,而不是在生成器的意义上使用“yield”) ,或 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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1144 次 |
最近记录: |