在 ThreadPoolExecutor 里使用 subprocess 算多线程还是多进程

2021-12-22 16:02:35 +08:00
 eccentric579
def doDownload(i):
    subprocess.run(['youtube-dl', '-o', f'{i[0]}.flv', f'{i[1]}'])


if __name__ == "__main__":
    bvids = getvideoList()
    with concurrent.futures.ThreadPoolExecutor(max_workers=4) as ex:
        for item in bvids:
            ex.submit(doDownload, item)

需要用到 subprocess.run()调用 shell 运行 youtube-dl

2362 次点击
所在节点    Python
5 条回复
ArchieMeng
2021-12-22 16:46:50 +08:00
看你怎么定义多进程。从操作系统来看,你这就是多进程。
ClericPy
2021-12-22 22:04:17 +08:00
之前试过子进程开多了确实利用了多核, 有多 pid 用了多个 CPU. 虽然在父进程里确实也是多线程...
mingl0280
2021-12-23 05:02:37 +08:00
肯定是多进程+线程啊,对于父进程来说,线程只是一个符号,你在多线程地管理多个符号而已。
zepc007
2021-12-27 09:26:44 +08:00
多线程和多进程算是被你整明白了
nikan999
2021-12-28 03:15:15 +08:00
算 多线程+多进程

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823783

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX