You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现多线程/多进程并发复制多个文件提升拷贝速度

Python多线程并发文件复制方案

文件复制是IO密集型操作,受磁盘/网络IO等待时间影响大,用Python标准库自带的线程池实现并发就能获得明显的速度提升,不需要安装第三方依赖,并发数可以按需调整到10甚至上百,注意不要开过高线程数导致IO争抢反而降速即可。

完整实现代码

import os
import shutil
from concurrent.futures import ThreadPoolExecutor, as_completed

# 基础配置
SOURCE_DIR = "All_files"
TARGET_DIR = "part"
COPY_FILENAME = "02-Partners.pdf"
# 并发线程数,按需调整即可,机械盘建议不超过32,SSD/网络存储可设为64~128
MAX_WORKERS = 32

# 提前创建目标目录,避免路径不存在报错
os.makedirs(TARGET_DIR, exist_ok=True)

def single_copy_task(dir_name):
    """单个文件复制任务,供线程池调用"""
    src = os.path.join(SOURCE_DIR, dir_name, COPY_FILENAME)
    if not os.path.exists(src):
        return None
    dst = os.path.join(TARGET_DIR, f"{dir_name}_{COPY_FILENAME}")
    shutil.copyfile(src, dst)
    return dir_name

if __name__ == "__main__":
    all_dirs = os.listdir(SOURCE_DIR)
    success_list = []

    # 初始化线程池提交所有任务
    with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
        task_map = [executor.submit(single_copy_task, d) for d in all_dirs]
        # 逐个获取已完成的任务结果
        for task in as_completed(task_map):
            res = task.result()
            if res:
                success_list.append(res)
    
    # 所有复制任务完成后,统一写入记录文件,避免多线程并发写文件冲突
    with open("files.txt", "w", encoding="utf-8") as f:
        for item in success_list:
            f.write(f"{item}\n")
    
    print(f"任务执行完成,共成功复制{len(success_list)}个文件")

核心改动点说明

  • 采用标准库concurrent.futures.ThreadPoolExecutor做线程池管理,自动处理线程的创建、回收、调度逻辑,仅需修改MAX_WORKERS参数即可调整并发数,支持从几个到上百个并发任务的灵活配置
  • 把原逻辑中边复制边写日志的逻辑拆分到主线程串行执行,避免多线程同时写入同一个文件导致的内容错乱、写入丢失问题
  • 替换原字符串拼接路径的写法为os.path.join,自动适配Windows/macOS/Linux不同系统的路径分隔符,减少路径兼容问题
  • 新增目标目录预创建逻辑,首次运行时不会因为part目录不存在抛出文件找不到的错误
  • 用as_completed接收任务返回结果,不需要按任务提交顺序等待,资源利用率更高

性能调优提示

  • 存储介质为机械硬盘(HDD)时,不要把并发数设得过高,16~32是比较合理的区间,线程过多会导致磁头频繁寻道,反而拖慢整体复制速度
  • 存储介质为固态硬盘(SSD)、或者复制源/目标是网络挂载路径(NAS、对象存储挂载盘等)时,可以把并发数调到64~128,能充分利用带宽提升总复制速度
  • 如果需要展示实时进度,可以在任务完成回调里加计数逻辑,注意多线程下共享变量计数要加线程锁避免统计不准

内容的提问来源于stack exchange,提问作者N K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:06:25