首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何控制多个计算?

如何控制多个计算?
EN

Stack Overflow用户
提问于 2018-05-03 09:30:42
回答 1查看 50关注 0票数 0

我假设asyncio.sleep(0)是一个(标准?)协程让其他协程运行的方式。但似乎我的协程不能有任何子例程结构(并放弃对顶层以下的控制)。

代码语言:javascript
复制
$ cat test.py
import asyncio

async def cor():
    def f():
        await asyncio.sleep(0)
    pass
$ python test.py
  File "test.py", line 5
    await asyncio.sleep(0)
    ^
SyntaxError: 'await' outside async function

让一小段复杂的代码在其他复杂代码运行时运行的最好方法是什么,这样当一个代码运行完成时,我就可以杀死其他代码?

EN

回答 1

Stack Overflow用户

发布于 2018-05-08 10:59:51

你在主题中提到了“计算”,我假设你的“复杂的代码”是CPU密集型的。顾名思义,asyncio更多的是I/O绑定操作,因此对您的情况没有帮助。

如果你想在外部杀死一个进程,我建议使用multiprocessingsubprocess。如果您有I/O或复杂的计时计划,则可以使用asyncio subprocess

对于正常的内部关闭,从外部以编程方式设置一个退出标志并触发工作进程内部的清理进程通常是一种好的做法:

代码语言:javascript
复制
def worker(self):
    while self.running:
        # next step of work
    # clean up here

但是,您有责任保持每个工作步骤相对较小,以便退出信号做出足够快的响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50145700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档