[英]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.