multithreading - 如何一致且并行地运行 Python 子进程?
问题描述
我写了一个 python 脚本,它转换mp3
为wav
with mpg123
。然后ffmpeg
获取输出mpg123
并对其进行上采样。最后,ffmpeg
输出文件上传到云端。所有这些步骤必须始终如一地运行。
subprocess.run(['mpg123', ...])
subprocess.run(['ffmpeg', ...])
upload()
假设我有很多mp3
文件,我想同时运行 10 个线程。我知道 Python 在subprocess.Popen
、threading
和模块concurrent.futures
中提供线程。multiprocessing
并行化此过程的正确方法是什么?
解决方案
您可以使用MPipe库:
from mpipe import OrderedStage, Pipeline
def increment(value):
return value + 1
def double(value):
return value * 2
stage1 = OrderedStage(increment, 3)
stage2 = OrderedStage(double, 3)
pipe = Pipeline(stage1.link(stage2))
for number in range(10):
pipe.put(number)
pipe.put(None)
for result in pipe.results():
print(result)
推荐阅读
- xml - 从 CSV Laravel-Excel 导出到 XML
- python - 禁止 (403) CSRF 验证失败。请求中止。登录页面不工作
- sql - 在 SQL 中对 3 列进行分组时连接第 4 列
- javascript - 更新路线中的位置状态不会反映在父组件上
- bootstrap-4 - 试图让无效反馈在引导程序中工作
- linux - 如何为 http 到 https 配置自签名到 localhost?
- excel - 如何在 vba 中从我的用户窗体调用模块?
- python - 如何在 Python 中开始这个类型转换作业?
- macos - 为什么 Rust 会发出 280 行汇编代码来打印“Hello, world”?
- jquery - Bootstrap 弹出框需要单击两次才能打开弹出框