youtube-dl
というコマンドを使うと各種動画サイトから指定したURLの動画をダウンロードできます。
複数のURLをPythonのsubprocess.run()
経由でダウンロードしていたのですが、中にはひどく時間のかかるものがあります。
下記のコードでは、そういったURLのダウンロードが終わるまでは次に進みません。
並列処理(並行処理?)というのを使えば同時に複数のものをダウンロードできるのでは?...と考えたのですが、処理能力と通信速度は別物のように感じます。
並列処理を施せば、全体でのダウンロード時間も短縮できるのでしょうか?
それとも、こういったケースでは意味がないのでしょうか?
また、もし早くできるようでしたら、どの並列処理の方法を使えばいいのかを概略でいいので教えていただけると幸いです。
thread
, threading
, concurrent.futures
, multiprocessing.Process
, multiprocessing.Pool
など色々とあって、どれを使えばいいのか分かっていません。
漠然とした質問で申し訳ありません。
Python
1import subprocess 2 3 4def main(): 5 urls = [ 6 "sample1", 7 "sample2", 8 "sample3", 9 ] 10 for url in urls: 11 subprocess.run(["youtube-dl", url]) 12 13 14if __name__ == "__main__": 15 main() 16
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/03/18 22:13