我对Python的异步概念还不熟悉。但是我想按顺序调用2个函数,顺序很重要:
def func1():
p = subprocess.Popen('ffmpeg -i in.webm out.mp4')
p.wait()
def func2():
os.remove('in.webm')
func1()
func2()
功能1包含一个子进程,用于转换视频文件,而功能2在此之后删除输入。
使用Popen
和p.wait()
会强制同步执行,但代价是阻塞主线程。
不使用p.wait()
的Popen
不会阻塞主线程,但使得ffmpeg完成其工作之前将调用功能2。
我想要实现与JavaScript Promise或async/await结构类似的效果,像这样:
async func1() {
let response = await fetch('/api');
let user = await response.json();
return user;
}
func2(func1());
听起来像是一个琐碎的任务,但我在多线程、多进程和异步编程之间迷失了。
我如何让函数2等待函数1的输出而不会阻塞主线程?
ffmpeg -i in.webm out.mp4 && rm in.webm
成功运行,您可以让shell为您完成它。 - Mark Setchellfunc2
接收一个promise,如果它想要获取“user”,则必须等待它。您还没有指定func2
是同步还是异步。能否请您详细说明JS示例,否则我不清楚您想要实现什么。 - user4815162342