码迷,mamicode.com
首页 > 系统相关 > 详细

多进程copy文件

时间:2018-01-10 11:31:03      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:使用   write   0.00   task   copy   获取   span   ini   users   

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文件

标签:使用   write   0.00   task   copy   获取   span   ini   users   

原文地址:http://blog.51cto.com/fonyer/2059256

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!