【问题标题】:How to use multithreading in python to download multiple files simultaneously如何在python中使用多线程同时下载多个文件
【发布时间】:2025-11-28 09:45:02
【问题描述】:

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

现在,我正在做如下:

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

【问题讨论】:

标签: python download multiprocessing urllib python-multithreading


【解决方案1】:

您可以定义一个function,它接受linklistfilenames,然后它将循环通过list 并下载files,然后为每个@987654330 创建一个thread @ 并让它以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()

【讨论】:

  • 很好,但是有没有办法将该文件夹中的所有文件读取到多个列表中?就像一个列表中的前 20 个,下一个列表中的下一个 20,依此类推。因为否则,由于文件夹中的文件数量巨大,无法将所有文件写入多个列表中。