首页 > 系统服务 > 详细

多任务(进程)案例----- 拷贝文件夹

时间:2019-08-28 16:56:46      阅读:91      评论:0      收藏:0      [点我收藏+]
技术分享图片
import multiprocessing
import os,time,random,sys

from PyQt5.Qt import  QApplication,QWidget,QFileDialog

def getDir():
    ‘‘‘
    利用pyqt5 获取目录路径
    return:str
    ‘‘‘
    app = QApplication(sys.argv)
    path = QFileDialog.getExistingDirectory()
    return path

def copy_file(source_dir,file_name,dest_dir):
    ‘‘‘
    具体的工作函数
    :return:None
    ‘‘‘
    with open(source_dir+/+file_name,r) as f_source,open(dest_dir+/+file_name,w) as f_dest:
        text = f_source.read()
        f_dest.write(text)
    print("拷贝完成")

def main():
    #获取要复制的文件夹
    source_dir = getDir()

    #目标文件夹
    dest_dir  = source_dir +"[副本6]"

    #创建文件夹
    try:
        os.mkdir(dest_dir)
    except:
        print("文件夹已经存在")

    #获取这个文件夹中的所有普通文件名
    file_names = os.listdir(source_dir)
    # print(file_names)

    #创建进程池
    pool = multiprocessing.Pool(5)

    t1 = time.time()
    for file_name in file_names:
        pool.apply_async(copy_file,args=(source_dir,file_name,dest_dir))

    pool.close()
    pool.join()
    print("总用时:{}".format(time.time()-t1))


if __name__ == __main__:
    main()
    ‘‘‘
    测试结果
    下为进程池里进程的个数对时间的影响  (此时为 100 个文件)
    1       0.6582393646240234
    2       0.546534538269043
    3       0.5874290466308594
    5       0.6821753978729248
    10      0.6153411865234375

    下为进程池里进程的个数对时间的影响  (此时为 1000 个文件)
    1       1.9657423496246338
    2       1.3813047409057617
    3       1.304509162902832
    5       1.4211978912353516
    10      1.2317066192626953
    ‘‘‘
View Code

 

多任务(进程)案例----- 拷贝文件夹

原文:https://www.cnblogs.com/zach0812/p/11424238.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!