我正在使用 GNU/Linux 和 python 2.7.3,我是新手。我正在尝试执行一个长时间安装的系统进程,比如ffmpeg
使用Popen()
命令来避免阻塞主要的 python 进程。我不能让它工作。
我的第一次尝试是使用线程,但它有点复杂,因为图形界面不能正常工作(我想必须有更好的方法)
然后我尝试了fork,但这就像用坦克杀死苍蝇一样。
现在我正在尝试使用Popen
,我在互联网上看到了很多关于它使用的参考,但我认为我没有正确运行它。也许我误解了这些例子。
我试过了:
##command is ffmpeg like that works ok
p = subprocess.Popen(command, shell=True)
我也试过:
p = subprocess.Popen(command,stdin=PIPE, shell=True)
通常我得到一个错误或一个连续的行为,命令结束,然后主程序恢复。我错过了什么?
命令部分:
global vidSource
global srtSource
global done
size = "3"
font = "/usr/share/fonts/truetype/freefont/FreeSerif.ttf"
command = 'mencoder ' + '"' + vidSource + '"' + " -oac copy -ovc lavc -lavdopts threads=2 -sub " + "'" + srtSource + "'" + " -subcp -utf8 -font "+ '"'+ font+ '"' + " -subfont-text-scale " + size + " -o " + '"' + vidSource + '2'+'"'