以下是使用Python多进程实现并行下载文件的示例代码:
import os
import requests
from multiprocessing import Process
def download_file(url, save_path):
response = requests.get(url)
with open(save_path, 'wb') as file:
file.write(response.content)
def parallel_download(urls, save_dir):
processes = []
for idx, url in enumerate(urls):
save_path = os.path.join(save_dir, f'file{idx}.txt')
process = Process(target=download_file, args=(url, save_path))
process.start()
processes.append(process)
for process in processes:
process.join()
# 示例使用的下载链接列表
urls = [
'https://example.com/file1.txt',
'https://example.com/file2.txt',
'https://example.com/file3.txt',
]
# 保存下载文件的目录
save_dir = 'downloaded_files'
# 创建保存目录
os.makedirs(save_dir, exist_ok=True)
# 并行下载文件
parallel_download(urls, save_dir)
上述代码中,download_file
函数用于下载单个文件,其中使用了requests
库发送HTTP请求,并将响应内容保存到本地文件中。
parallel_download
函数接受一个URL列表和一个保存目录作为参数,在函数内部创建多个进程,每个进程负责下载一个文件。通过调用Process
类的start
方法启动进程,然后将每个进程对象添加到processes
列表中。
最后,通过调用join
方法等待所有进程执行完毕。
注意:由于使用了多进程,代码示例中的requests
库调用需要在if __name__ == '__main__':
条件下执行,以避免Windows系统中出现AttributeError: Can't get attribute 'download_file' on
错误。可以将示例代码包装在if __name__ == '__main__':
条件下,或将其封装成一个函数,并在if __name__ == '__main__':
条件下调用该函数。
上一篇:并行下载7000个文件
下一篇:并行写入多个Parquet文件