Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 从多进程调用的子进程未完成_Python 3.x_Ffmpeg_Multiprocessing_Subprocess - Fatal编程技术网

Python 3.x 从多进程调用的子进程未完成

Python 3.x 从多进程调用的子进程未完成,python-3.x,ffmpeg,multiprocessing,subprocess,Python 3.x,Ffmpeg,Multiprocessing,Subprocess,我有一组视频,我试图从中提取随机帧。有很多视频,所以我想并行工作,ffmpeg可以为我拼接帧,所以这里是代码的重要部分: 导入操作系统 从TQM导入TQM 从joblib并行导入,延迟 从多处理导入当前\u进程 从子流程导入Popen vids_dir='只是一个字符串' out_dir='另一个字符串' 每个def过程(f): temp='temp'+str(当前\u进程()。\u标识[0]) os.mkdir(临时) proc=Popen(['ffmpeg-i'+vids_dir+'/'+f

我有一组视频,我试图从中提取随机帧。有很多视频,所以我想并行工作,
ffmpeg
可以为我拼接帧,所以这里是代码的重要部分:

导入操作系统
从TQM导入TQM
从joblib并行导入,延迟
从多处理导入当前\u进程
从子流程导入Popen
vids_dir='只是一个字符串'
out_dir='另一个字符串'
每个def过程(f):
temp='temp'+str(当前\u进程()。\u标识[0])
os.mkdir(临时)
proc=Popen(['ffmpeg-i'+vids_dir+'/'+f+'+temp+'/'+f[:-4]+'.%03d.jpg&>/dev/null'],shell=True)#转换为帧
进程等待()
#做事
操作系统('rm-rf'+温度)#清理
并行(n_作业=10)(tqdm(os.listdir(vids_目录))中f的延迟(每个进程)(f)
我可以打印出传递给
Popen
的命令,并在shell中执行它,它就可以工作了。我可以打开一个
python3
会话,并从
Popen
子进程调用该命令。call
甚至
os.system
,它可以工作。我甚至可以在我的
Parallel
中设置
n_jobs=1
,它可以工作

但是,当我真正并行化它的时候,我发现
ffmpeg
并没有将其全部结果刷新到临时文件夹中;它只获取前一帧或前几帧

到底发生了什么事<代码>子流程和
多处理
应该能够以这种方式混合使用