多进程copy文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多进程copy文件相关的知识,希望对你有一定的参考价值。

from multiprocessing import Pool,Manager  import os,time def copyFileTask(fileName,oldFolderName,newFolderName,queue): fr = open(oldFolderName+"/"+fileName,'r',encoding='UTF-8') fw = open(newFolderName+"/"+fileName,'w',encoding='UTF-8') #复制 while True: content = fr.read(1024) if len(content) == 0: break fw.write(content) #关闭文件 fr.close() fw.close() queue.put(fileName) def main(): oldFolderName = 'test'#input("请输入要复制的文件夹名字:") #创建目录 newFolderName = oldFolderName+"[复件]" os.mkdir(newFolderName) #获取文件列表 fileList = os.listdir(oldFolderName) #使用多进程的方式复制 pool = Pool(5) #消息队列 queue = Manager().Queue() for file in fileList: #copyFileTask(file,oldFolderName,newFolderName,queue) pool.apply_async(copyFileTask,args=(file,oldFolderName,newFolderName,queue)) num = 0 total = len(fileList) while num<total: queue.get() num += 1 rate = num/total*100 print('\r复制的进度是:%.2f%%'%rate,end="") #关闭进程池,不再接受新的进程 #pool.close() #主进程阻塞等待子进程的退出 #pool.join() if __name__ == '__main__': t_start = time.time() main() t_stop = time.time() print("\n执行完毕,耗时%0.2f"%(t_stop-t_start))

单进程:

C:\Users\Administrator>python d:\python\copy.py

复制的进度是:100.00%

执行完毕,耗时6.53


多进程:

C:\Users\Administrator>python d:\python\copy.py

复制的进度是:100.00%

执行完毕,耗时6.59



以上是关于多进程copy文件的主要内容,如果未能解决你的问题,请参考以下文章

应用:文件夹copy器(多进程版)

python2 logging模块在多进程和多线程混用下的一个坑

Python多进程与单进程效率对比

python22-多进程

python多进程共享内存

进程创建函数fork