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 ...
随机推荐
- java 中文乱码以及转码
查看此文章需要对字符集编码有一定的认识:任意门:字符集编码基础 一.字符串的内部表示? 重点:字符串在java(指在JVM中.在内存中)中统一用unicode表示( 即utf-16 LE) , 下面解 ...
- 一个表里有多个字段需要同时使用字典表进行关联显示,如何写sql查询语句
参考:https://bbs.csdn.net/topics/330032307 数据库里面有一个字典表,这张表里面有id段和对应的名字字段.在另外一个记录的表里面有对应的上述字典表的id,而且有多个 ...
- HDFS副本放置策略
1.第一个副本放置在上传文件的DataNode上,如果是集群外提交,则随机挑选一个磁盘不太满,CPU不太忙的节点. 2.第二个副本放置在与第一个副本不同的机架上. 3.第三个副本放置在与第二个副本同机 ...
- [20190409]pre_page_sga=true与连接缓慢的问题.txt
[20190409]pre_page_sga=true与连接缓慢的问题.txt --//曾经遇到11g下设置pre_page_sga=true启动缓慢的问题(没有使用hugepages).--//链接 ...
- 简说raid1 raid2 raid5 raid6 raid10的优缺点和做各自raid需要几块硬盘
Raid 0:一块硬盘或者以上就可做raid0优势:数据读取写入最快,最大优势提高硬盘容量,比如3快80G的硬盘做raid0 可用总容量为240G.速度是一样.缺点:无冗余能力,一块硬盘损坏,数据全无 ...
- python3 str(字符串)
__add__函数 (在后面追加字符串) s1 ='Hello' s2 = s1.__add__(' boy!') print(s2) #输出:Hello boy! __contains__(判断是否 ...
- 电信中兴F460光猫sendcmd命令
1.安装xshell后,使用命令行登陆root用户,root用户密码Zte521(湖北地区) 2.查看所有用户密码 sendcmd 1 DB p DevAuthInfo 3.打开网页登陆teleco ...
- Django的认证系统
Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...
- 使用idea搭建Scala 项目
主要内容 Intellij IDEA开发环境简介 Intellij IDEA Scala开发环境搭建 Intellij IDEA常见问题及解决方案 Intellij IDEA常用快捷键 1. Inte ...
- Ubuntu 18.04.1 下快速搭建 LNMP环境
1.Nginx的安装 Nginx安装是属于最简单的,只需要在命令行执行 sudo apt-get install nginx 就能自动安装 Nginx,其中过程中需要 选择 Y/n 的选择Y就行了,当 ...