python使用多进程multiprocessing批量执行,pool.apply_async解压缩文件。(可以是其他任务,开辟进程池)

该博客介绍了如何使用Python的multiprocessing模块实现多进程批量解压缩文件。通过定义check_if_dir函数遍历查找ZIP文件,然后使用UnpackZip函数进行解压缩,主函数main中创建进程池并异步执行解压任务,实时打印解压进度。整个过程提高了文件解压缩的效率。

python使用多进程multiprocessing批量执行,pool.apply_async解压缩文件。(可以是其他任务,开辟进程池)

import os
import  zipfile
import multiprocessing
import  datetime
#author by AHCH_yangdebin

path=r'D:\研究\安徽底图20181226\anhui_20181225_zip\vec_w\340000000_安徽省_00000001_vec_w'

path_read=[]    #Zip文件路径集合

unPack_dir=r'D:\AH_TileData\vec_w',

count=0
allCount=0

date1=''
date2=''

def check_if_dir(filepath):
    temp_list = os.listdir(filepath)
    #print(temp_list)   #文件夹名称(仅名字)集合
    for temp_list_each in temp_list:
        pathName = filepath + '/' + temp_list_each
        if os.path.isfile(pathName):
            if os.path.splitext(pathName)[-1] == '.zip':
                path_read.append(pathName)
            else:
                continue
        else:
            check_if_dir(pathName)


def UnpackZip(zipfilePath,count,jieYaLv):
    subPath = zipfilePath[count:-3]  # 截取后面的路径(不包含.zip)。如:\340000000_安徽省_00000013_vec_w\16\0100\2126\0703
    # print(subPath)
    unPack_path = unPack_dir + subPath

    with zipfile.ZipFile(zipfilePath,mode="a") as f:
        f.extractall(unPack_path)
    f.close()
    print(jieYaLv)

def main():
    k=0
    pool = multiprocessing.Pool()

    for zipFile_path in path_read:
        k=k+1
        jieyaLv= "已解压完成:" + str(k * 100 / allCount) + "%"
        pool.apply_async(UnpackZip,(zipFile_path,count,jieyaLv))

    pool.close()
    pool.join()

    print("---------------------已解压完成:" + "100%----Successful----------------------")
    date2 = datetime.datetime.now()
    print("结束时间:" + str(date2))
    print("总消耗时间:" + str(date2 - date1))


if __name__ =='__main__':
    date1 = datetime.datetime.now()
    print("开始时间:" + str(date1))
    print("---------------------开始查找所有Zip---------------------")

    check_if_dir(path)
    print("Zip文件总个数:" + str(len(path_read)))
    print("---------------------查找到所有Zip----Successful---------------------")
    print("---------------------开始解压Zip---------------------")

    count = len(path)
    allCount = len(path_read)

    main()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木易GIS

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

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

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

打赏作者

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

抵扣说明:

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

余额充值