使用^{}:import multiprocessing.dummy
import subprocess
arr = [
{'vpath': 'example/%(title)s.%(ext)s', 'url': 'https://www.youtube.com/watch?v=BaW_jenozKc'},
{'vpath': 'example/%(title)s.%(ext)s', 'url': 'http://vimeo.com/56015672'},
{'vpath': '%(playlist_title)s/%(title)s-%(id)s.%(ext)s',
'url': 'https://www.youtube.com/playlist?list=PLLe-WjSmNEm-UnVV8e4qI9xQyI0906hNp'},
]
email = 'my-email@example.com'
password = '123456'
def download(v):
subprocess.check_call([
'echo', 'youtube-dl',
'-u', email, '-p', password,
'-o', v['vpath'], ' ', v['url']])
p = multiprocessing.dummy.Pool(concurrent)
p.map(download, arr)
^{}是Pool的一个基于线程的轻量级版本,在这里更合适,因为工作任务只是启动子流程。在
还要注意youtube的dloutput templates非常强大。在大多数情况下,实际上不需要自己定义和管理文件名。在