繁体   English   中英

你能用Python队列线程或进程吗?

[英]Can you Queue Threads or Processes in Python?

我有一个功能,可以在修改文件后保存文件(视频文件由ffmpeg修改)。 该函数使用二进制文件,在其上调用子进程。 我遇到的问题是如果我在第一次运行后不久就调用了这个函数(即第一个进程仍在运行),第二个进程将不会执行,或者它将覆盖第一个进程。

我仍然是进程和线程的新手,我不想让函数创建一堆线程,因为我担心这可能会失控(没有根据的恐惧?)。 当二进制文件空闲时,如何获取排队另一个作业并执行它的功能?

码:

pipe = sp.Popen([ffmpeg_binary,"-i", sample_vid, "-vcodec", "copy", "-acodec", "copy",
                 "-ss", start_time, "-t", end_time, "-sn", output_file_name ])

output_file_name变量检查它是否存在。 如果它不存在,它将设置变量等于输入文件名+ index + .extension。

您可以在继续下一个进程之前调用每个进程上的subprocess.wait() 这将阻塞,直到该过程完成,确保所有子进程按顺序运行。 请参阅文档

如果您只想调用外部命令而不是使用所有进程/线程低级api,请使用库sh

然后你可以这样做:

from sh import ffmpeg

ffmpeg(arg1, arg2)  # call 1
ffmpeg(arg2, arg3)  # call 2

# if you want custom binary

from sh import Command
ffmpeg = Command('/path/to/ffmpeg')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM