python中使用多进程和单进程分别拷贝大量文件效率对比
来源:互联网 发布:c 编程游戏写法 编辑:程序博客网 时间:2024/06/07 17:50
此贴用于研究多进程和单进程拷贝大量文件的效率问题
首先建立test文件夹,然后使用下列代码批量创建200个py文件
#创建200个文件i = 0while i < 200: o = open("test/"+str(i)+".py","w") content = str(i); o.write(content) o.close() i += 1
一:使用进程池Pool拷贝文件
下列代码中将创建5个进程用于拷贝文件
from multiprocessing import Pool,Managerimport timeimport osimport shutilimport randomstart = time.time()#从源文件夹复制到目标文件夹def copyFile(file_name,old_folder_name,new_folder_name,q): time.sleep(random.random()) shutil.copyfile(old_folder_name+"/"+file_name,new_folder_name+"/"+file_name,) q.put(file_name)def main(): #创建Pool pool = Pool(5) #创建小心队列 q = Manager().Queue() #获取待拷贝的文件夹名 old_folder_name = input("请输入你要拷贝的文件夹名称:") #组装目标文件夹名称 new_folder_name = old_folder_name + "-复制" os.mkdir(new_folder_name) file_name_list = os.listdir(old_folder_name) for value in file_name_list: pool.apply_async(copyFile,args=(value,old_folder_name,new_folder_name,q)) count = 0 allLength = len(file_name_list) while count < allLength: message = q.get() count += 1 print("\r正在拷贝%s,拷贝的进度是:%d%%"%(message,(count/allLength)*100),end="") print("\n拷贝完毕")if __name__ == "__main__": main() end = time.time() print("多进程花费的时间:%#.2fs"%(end-start))
执行代码后,运行结果为:
请输入你要拷贝的文件夹名称:test
正在拷贝132.py,拷贝的进度是:100%
拷贝完毕
多进程花费的时间:25.05s
此时可以得知多进程拷贝200个文件总花费时间为25.05s.
二:使用单进程批量拷贝文件
import timeimport osimport shutilimport randomstart = time.time()#从源文件夹复制到目标文件夹def copyFile(file_name,old_folder_name,new_folder_name): time.sleep(random.random()) shutil.copyfile(old_folder_name+"/"+file_name,new_folder_name+"/"+file_name,)def main(): #获取待拷贝的文件夹名 old_folder_name = input("请输入你要拷贝的文件夹名称:") #组装目标文件夹名称 new_folder_name = old_folder_name + "-复制" os.mkdir(new_folder_name) file_name_list = os.listdir(old_folder_name) count = 0 allLength = len(file_name_list) for value in file_name_list: copyFile(value,old_folder_name,new_folder_name) count += 1 print("\r正在拷贝%s,拷贝的进度是:%d%%" % (value, (count / allLength) * 100), end="") print("\n拷贝完毕")if __name__ == "__main__": main() end = time.time() print("单进程花费的时间:%#.2fs"%(end-start))
上段代码的执行结果:
请输入你要拷贝的文件夹名称:test
正在拷贝98.py,拷贝的进度是:100%
拷贝完毕
单进程花费的时间:99.66s
由两段代码的执行结果来看,对于大批量文件,多进程效率是单进程效率4倍左右。
注意:倍数不是绝对的,由电脑硬件,文件数以及其他因素共同决定的
阅读全文
0 0
- python中使用多进程和单进程分别拷贝大量文件效率对比
- Python中单线程、多线程和多进程的效率对比实验
- Python中单线程、多线程和多进程的效率对比实验
- Python中单线程、多线程和多进程的效率对比实验
- Python中单线程、多线程与多进程的效率对比实验
- Python中单线程、多线程与多进程的效率对比实验
- Python中使用多进程复制文件
- 多进程拷贝文件
- Python爬虫(四):爬取136书屋小说,并保存至本地文本文件中,单进程多进程对比效率(以三生三世十里桃花为例)
- Python 多线程和多进程对比
- 多进程和多线程文件拷贝
- 多进程和多线程文件拷贝
- 【Python】进程和线程对比
- Python多进程拷贝文件夹中的所有文件
- python进阶之利用多进程实现文件的拷贝
- 多进程拷贝文件 提高io效率 利用 文件空洞 内容很简单 原理很深刻
- python量化分析系列之---python分别使用多线程和多进程获取所有股票实时数据
- 文件锁和Python多进程的使用
- python机器学习基础语法入门
- 请输出1000以内能被11整除的最小的6个整数和最大的6个整数
- bzoj2744 [HEOI2012]朋友圈 ( 二分图最大团转补图最大独立集+时间戳优化+匈牙利算法)
- 计蒜客 17119 Trig Function(2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F)
- 最新cygwin下使用zsh
- python中使用多进程和单进程分别拷贝大量文件效率对比
- Android NDK 编程常见错误收集
- 拓扑排序模板--hdu2647
- GeekBand笔记-《C++设计模式》第二周
- c++普通继承、虚继承、虚函数对sizeof的影响
- [HDU]1530 Maximum Clique 最大团问题[模板]
- (网易2018校招笔试)[编程题] 字符串碎片
- android 性能调优
- Java文件操作