首页 > 解决方案 > 如何一致且并行地运行 Python 子进程?

问题描述

我写了一个 python 脚本,它转换mp3wavwith mpg123。然后ffmpeg获取输出mpg123并对其进行上采样。最后,ffmpeg输出文件上传到云端。所有这些步骤必须始终如一地运行。

subprocess.run(['mpg123', ...])
subprocess.run(['ffmpeg', ...])
upload()

假设我有很多mp3文件,我想同时运行 10 个线程。我知道 Python 在subprocess.Popenthreading和模块concurrent.futures中提供线程。multiprocessing并行化此过程的正确方法是什么?

标签: multithreadingsubprocesspython-multiprocessingpython-multithreadingpopen

解决方案


您可以使用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)

推荐阅读