如何在python中使用多线程同时下载多个文件

时间:2017-07-11 23:01:28

标签: python download multiprocessing urllib python-multithreading

我有一个文件夹的链接,该文件夹包含我要下载的大量文件。我开始一次下载单个文件,但是需要很长时间。有没有办法产生一些多线程进程来同时下载一批文件。可能就像process1下载文件夹中的前20个文件一样,process2同时下载下20个文件,依此类推。

现在,我做的如下:

import urllib, os
os.chdir('/directory/to/save/the/file/to')
url = 'http://urltosite/folderthathasfiles
urllib.urlretrieve(url)

1 个答案:

答案 0 :(得分:1)

您可以定义function linklist filenames然后它会遍历list并下载files然后为每个thread创建一个list,并将其定位到function。例如:

def download_files(url, filenames):
    for filename in filenames:
        urllib.urlretrieve(os.path.join(url,filename))

# then create the lists and threads
url = 'test.url'
files = [[file1, file2, file3....], [file21, file22, file23...]...]
for lst in files:
    threading.Thread(target=download_files, args=(url, lst)).start()