boto3のS3.Client.download_fileメソッドを使って大量のファイルをダウンロードすると、aws cliでダウンロードするよりかなり遅い。
理由はdownload_fileは同期処理なのに対してaws cliはマルチスレッド(ちゃんと調べてないのでマルチプロセスかも)で並列実行しているため。アップロードも同様。
以下を参考に、transfer_managerを使って並列実行するよう実装するとアップロード・ダウンロードが7倍程度早くなった。
boto3のS3.Client.download_fileメソッドを使って大量のファイルをダウンロードすると、aws cliでダウンロードするよりかなり遅い。
理由はdownload_fileは同期処理なのに対してaws cliはマルチスレッド(ちゃんと調べてないのでマルチプロセスかも)で並列実行しているため。アップロードも同様。
以下を参考に、transfer_managerを使って並列実行するよう実装するとアップロード・ダウンロードが7倍程度早くなった。