Python多进程与单进程效率对比
运行环境:Python3 in win10
先生成200个测试文件
# generate.py
i = 0
while i < 200:
o = open("test\\" + str(i) + ".py", "w")
content = str(i)
o.write(content)
o.close()
i += 1
多进程拷贝文件
# multi-pool-copy.py
from multiprocessing import Pool, Manager
import time
import os
import shutil
import random
start = 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) # put item into the queue
def main():
pool = Pool(5)
q = Manager().Queue()
old_folder_name = input("Please input the folder name you want to copy: ")
new_folder_name = old_folder_name + "-copy"
os.mkdir(new_folder_name)
file_name_list = os.listdir(old_folder_name)
for file in file_name_list:
pool.apply_async(copyFile, args=(file, old_folder_name, new_folder_name, q))
cnt = 0
allLength = len(file_name_list)
while cnt < allLength:
message = q.get()
cnt += 1
print("\rCopying %s, Process Bar is:%d%%" % (message, (cnt / allLength) * 100), end="")
print("Copy Done!")
if __name__ == "__main__":
main()
end = time.time()
print("Time-consuming: %#.2fs" % (end-start))
在使用单进程拷贝文件之前,需要手动删除test-copy文件夹
# single-pool-copy.py
import time
import os
import shutil
import random
start = 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("Please input the folder name you want to copy: ")
new_folder_name = old_folder_name + "-copy"
os.mkdir(new_folder_name)
file_name_list = os.listdir(old_folder_name)
cnt = 0
allLength = len(file_name_list)
for file in file_name_list:
copyFile(file, old_folder_name, new_folder_name)
cnt += 1
print("\rCopying %s, Process Bar is:%d%%" % (file, (cnt / allLength) * 100), end="")
print("Copy Done!")
if __name__ == "__main__":
main()
end = time.time()
print("Time-consuming: %#.2fs" % (end-start))
Python多进程与单进程效率对比的更多相关文章
- Python 多进程、多线程效率比较
Python 界有条不成文的准则: 计算密集型任务适合多进程,IO 密集型任务适合多线程.本篇来作个比较. 通常来说多线程相对于多进程有优势,因为创建一个进程开销比较大,然而因为在 python 中有 ...
- 约瑟夫环问题及python与c++实现效率对比
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重 ...
- PHP多进程非阻塞模式下结合原生Mysql与单进程效率测试对比
公司在做游戏服务器合并的时候,对大批量数据表做了合并操作,难免会出现数据格式不一致问题.根据玩家反映BUG排查,是因为某个模块下日志表出现了数据格式问题导致. 目前想到的是有两种方案解决,第一种就是把 ...
- [python]关于字符串查找和re正则表达式的效率对比
最近需要在python中做大日志文件中做正则匹配 开始直接在for in 中每行做re.findall,后来发现,性能不行,就在re前面做一个基本的字符串包含判断 (str in str),如果不包含 ...
- 【Python | opencv+PIL】常见操作(创建、添加帧、绘图、读取等)的效率对比及其优化
一.背景 本人准备用python做图像和视频编辑的操作,却发现opencv和PIL的效率并不是很理想,并且同样的需求有多种不同的写法并有着不同的效率.见全网并无较完整的效率对比文档,遂决定自己丰衣足食 ...
- python 多进程开发与多线程开发
转自: http://tchuairen.blog.51cto.com/3848118/1720965 博文作者参考的博文: 博文1 博文2 我们先来了解什么是进程? 程序并不能单独运行,只有将程 ...
- python多进程与多线程编程
进程(process)和线程(thread)是非常抽象的概念.多线程与多进程编程对于代码的并发执行,提升代码运行效率和缩短运行时间至关重要.下面介绍一下python的multiprocess和thre ...
- Python多进程与多线程编程及GIL详解
介绍如何使用python的multiprocess和threading模块进行多线程和多进程编程. Python的多进程编程与multiprocess模块 python的多进程编程主要依靠multip ...
- Python多进程编程
转自:Python多进程编程 阅读目录 1. Process 2. Lock 3. Semaphore 4. Event 5. Queue 6. Pipe 7. Pool 序. multiproces ...
随机推荐
- 导入JavaWeb 项目出现的问题
前言: 环境: windown 10 JDK 1.8 Tomcat 7 eclipse 导入项目 下面错误是出现的问题 Multiple annotations found at this line: ...
- spring3:多数据源配置使用
0. properties ####################################mysql########################################### d ...
- Python爬虫之pyquery库的基本使用
# 字符串初始化 html = ''' <div> <ul> <li class = "item-0">first item</li> ...
- C# -- 结构、访问修饰符
C# -- 结构.访问修饰符 1. 结构: struct 类型 对于结构,不像类那样存在继承. 一个结构不能从另一个结构或类继承,而且不能作为一个类的基. 但是,结构从基类 Object 继承. 结构 ...
- C语言----int (*p)[4] ---思考总结
a+1 跳4个int (*a)+1 跳一个int
- 爬虫系列----scrapy爬取网页初始
一 基本流程 创建工程,工程名称为(cmd):firstblood: scrapy startproject firstblood 进入工程目录中(cmd):cd :./firstblood 创建爬虫 ...
- Putty中的pscp和psftp的简明用法
用习惯了putty,那是真心的方便啊,putty文件夹下其他的小兄弟也不能忽略啊. 以前的时候,从远程服务器下载个文件用winscp,后来,发现在putty文件夹里好像有一个 pscp和psftp,今 ...
- day5-python的文件操作-坚持就好
目录摘要 文件处理 1.文件初识 2.文件的读操作 3.文件的写操作 4.文件的追加操作 5.文件的其他操作 6.文件的修改 正式开始 文件处理:写了这么多代码了,有的时候我们执行完成的结果想永久保存 ...
- CentOS下部署Redis集群
一.部署环境 服务器三台: 10.10.15.41(配置运行两个实例,端口:6379,6380) 10.10.15.42(配置运行两个实例,端口:6381,6382) 10.10.15.43(配置运行 ...
- linux目录2
19.linux注释多行 20.防火墙 21.创建逻辑卷 22.两台主机,ssh端口不同,如何拷贝文件