Most likely the reason it takes so long is that it takes time to open a connection make the request, get the file and close the connection again.
A thousand files in an hour is 3.6 seconds per file, which is high, but the site you are downloading from may be slow.
The first thing to do is to use HTTP/2.0 and keep one conection open for all the files with Keep-Alive. The easiest way to do that is to use the Requests library, and use a session.
If this isn't fast enough, then you need to do several parallel downloads with either multiprocessing or threads.