Python日常学习之:用进程池 multiprocessing.Pool() 的方式写一个多线程文件复制功能

本文介绍了一种使用Python生成指定数量测试文件的方法,并详细阐述了如何利用多进程技术加速文件拷贝过程,提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成测试文件夹和测试文件

import os

if __name__ == '__main__':

    source_dir = input("请输入您想产生的文件夹名称:")
    filename = os.path.join('./',source_dir)
    try:
        os.makedirs(filename)
    except FileExistsError as e:
        print("文件已经存在")

    doc_number = input('您想产生的测试文件数量为:')
    for i in range(int(doc_number)):
        doc_name = os.path.join(filename,str(i)+'.txt')
        with open(doc_name,'w') as f:
            x = str(i) * 10
            f.write(x)

文件拷贝功能实现代码

import os
import multiprocessing


def copy_doucument(source_dir,doc_name,copy_dir):
    source_file = os.path.join(source_dir,doc_name)
    with open(source_file,'r') as f:
        x = f.read()

    save_file = os.path.join(copy_dir,doc_name)

    with open(save_file,'w') as f:
        f.write(x)


if __name__ == '__main__':
    source_doc = input("您想要复制的文件夹名称是:")
    copy_doc = input('你想要复制到哪个文件夹中去?:')
    source_dir = os.path.join(os.getcwd(),source_doc)
    copy_dir = os.path.join(os.getcwd(),copy_doc)
    current_dir = os.getcwd()
    parent_dir = os.path.join(current_dir,os.pardir)
    print(parent_dir)
    print(source_dir)
    print(copy_dir)

    try:
        os.makedirs(copy_dir)
    except FileExistsError as e:
        print("文件夹已经存在,开始复制")

    lst_dir = os.listdir(source_dir)
    pool = multiprocessing.Pool(5)
    for doc_name in lst_dir:
        pool.apply_async(copy_doucument,args=(source_dir,doc_name,copy_dir))
    pool.close()
    pool.join()

注意!!!!
如果使用了 pool.apply_async 却没有写 pool.close() 和 pool.join() ,程序不会运行成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值