Multi threaded downloader in Python 2.7 using concurrent.futures
Single thread
rkadam@rkadam-vbox:~/github/pydwnldr/src$ time wget http://ubuntu.mirrors.tds.net/pub/releases/15.10/ubuntu-15.10-desktop-amd64.iso --2016-01-28 15:47:20-- http://ubuntu.mirrors.tds.net/pub/releases/15.10/ubuntu-15.10-desktop-amd64.iso Resolving ubuntu.mirrors.tds.net (ubuntu.mirrors.tds.net)... 64.50.236.222 Connecting to ubuntu.mirrors.tds.net (ubuntu.mirrors.tds.net)|64.50.236.222|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1178386432 (1.1G) [application/octet-stream] Saving to: ‘ubuntu-15.10-desktop-amd64.iso’ ubuntu-15.10-desktop-amd64.iso 100%[======================================================================================>] 1.10G 844KB/s in 22m 49ss 2016-01-28 16:10:09 (840 KB/s) - ‘ubuntu-15.10-desktop-amd64.iso’ saved [1178386432/1178386432] real 22m49.513s user 0m0.180s sys 0m29.884s 4 Threads
(pydwnldr)rkadam@rkadam-vbox:~/github/pydwnldr/src$ time python dwnldr.py http://ubuntu.mirrors.tds.net/pub/releases/15.10/ubuntu-15.10-desktop-amd64.iso Downloading ubuntu-15.10-desktop-amd64.iso 1178386432 bytes real 5m53.696s user 0m0.764s sys 0m32.244s 8 Threads
(pydwnldr)rkadam@rkadam-vbox:~/github/pydwnldr/src$ time python dwnldr.py http://ubuntu.mirrors.tds.net/pub/releases/15.10/ubuntu-15.10-desktop-amd64.iso Downloading ubuntu-15.10-desktop-amd64.iso 1178386432 bytes real 3m2.407s user 0m1.040s sys 0m36.796s