【发布时间】:2019-07-24 09:51:27
【问题描述】:
我正在尝试构建一个可从“标准”(即:非 asyncio)代码和 asyncio 协程实例化的类。
特别是一些方法需要产生subprocesses 并等待完成。
不同之处在于,当子进程运行时,我不应该阻塞整个程序(其他协程,如果存在,应该能够运行)。
这归结为使用plain:
from subprocess import run
r = run(arg[0], args)
在“标准”代码中:
from asyncio import create_subprocess_exec
r = await create_subprocess_exec(*args)
t = await r.wait()
问题是我不能从标准的非async 方法await 即使循环正在运行(我可以测试循环是否正在运行以区分,但我不知道如何挂钩到正在运行的循环,如果有的话)。
【问题讨论】:
-
这与“可实例化的类”有何关系?什么课程和什么问题?
-
@RomanPerekhrest:当然,类在两种环境中都是可实例化的,但是,除非我做某事,否则它会在子进程处于活动状态时阻塞整个程序。因此,我需要一些方法来有条件地以“异步友好”的方式运行子进程,否则该类的某些方法将出现异常(阻止其他所有方法)。
标签: python python-3.x subprocess python-asyncio