我有一个下载然后转换视频的脚本。我正在尝试一次完成所有下载(很多wgets),然后当它们完成后,转换它们。现在我必须等待每个文件单独下载,然后完成后转换。我希望所有下载请求同时运行。
以下是我的“下载”脚本中保存所有内容的部分。
for id in ids:
subprocess.Popen(cmd, shell=True).wait()
我的'convert'脚本在下载脚本上等待完成。 (这是必要的,因为我使用一组下载来组织一切。)
我可以使用一个队列,但是我已经把它弄得一团糟了,我希望有一个更简单的解决方案。
由于
答案 0 :(得分:1)
你可以使用
process_list = []
for id in ids:
process_list.append(subprocess.Popen(cmd, shell=True))
for process in process_list:
process.wait()
因此,您将在同时工作结束时等待。
答案 1 :(得分:0)
您可以使用xargs
作为简单的解决方案,如果您的平台可用。
从手册页:
-P max-procs
Run up to max-procs processes at a time; the default is 1. If
max-procs is 0, xargs will run as many processes as possible at
a time. Use the -n option with -P; otherwise chances are that
only one exec will be done.
当然有更好的解决方案,但如果您需要快速解决方案,这可能是最容易实现的。