Isn't already the processes being as fast as they can? How is it going to be different when you do this: ```py # Asynchronous way: await asyncio.gather( async_download(url1), # takes 5 sec. async_download(url2) # takes 5 sec. ) # Total time: only 5 sec. (+ little overhead for using asyncio)``` instead of this: ```py # Synchronous way: download(url1) # takes 5 sec. download(url2) # takes 5 sec. # Total time: 10 sec. ```
In the first case, it would download everything at the same time, so everything takes a maximum of the slowest download... as it says, 5 + 5 = 5, or if it where 10 + 5 then the second download finishes before the first While in the bottom example, the second download won't start until the first has finished, hence 5 + 5 = 10 seconds to finish (with more files it gets worse ofc), while the first example only takes 5 seconds and even if one single download should take 10 seconds, the rest still finishes in 5