python中日志logging模块的性能及多进程详解


Posted in Python onJuly 18, 2017

前言

Java 中最通用的日志模块莫过于 Log4j 了,在 python 中,也自带了 logging 模块,该模块的用法其实和 Log4j 类似。日志是记录操作的一种好方式。但是日志,基本都是基于文件的,也就是要写到磁盘上的。这时候,磁盘将会成为一个性能瓶颈。对于普通的服务器硬盘(机械磁盘,非固态硬盘),Python日志的性能瓶颈是多少呢?今天我们就来测一下。下面话不多说,来一起看看详细的介绍:

测试代码如下:

#! /usr/bin/env python 
#coding=utf-8 
 
# ============================ 
# Describe : 给平台提供的日志 
# D&P Author By:  常成功 
# Create Date:  2016/08/01 
# Modify Date:  2016/08/01 
# ============================ 
 
import time 
import os 
import logging 
 
 
print "Start test ...." 
s_tm = time.time() 
test_time = 10.0 # 测试时间10秒 
e_tm = s_tm + 10 
j = 0 
 
pid = str(os.getpid()) 
while 1: 
 now_time = time.time() 
 j += 1 
 if now_time > e_tm: 
  break 
 # 生成文件夹 
 lujing = "d:\\test_log" 
 if not os.path.exists(lujing): 
  os.mkdir(lujing) 
 
 fm2 = '%Y%m%d' 
 YMD = time.strftime(fm2, time.localtime(now_time)) 
 
 filename = 'recharge_' + YMD + '.log' 
 log_file = os.path.join(lujing, filename) 
 t = "\t" 
 log_msg = str(j) +t+ str(now_time) +t+ pid 
 
 the_logger = logging.getLogger('recharge_log') 
 f_handler = logging.FileHandler(log_file) 
 the_logger.addHandler(f_handler) 
 the_logger.setLevel(logging.INFO) 
 # To pass exception information, use the keyword argument exc_info with a true value 
 the_logger.info(log_msg, exc_info=False) 
 the_logger.removeHandler(f_handler) 
 
rps = j/test_time 
print rps, "rows per second"

结果为:

Start test ....

2973.0 rows per second

python中日志logging模块的性能及多进程详解

Python的logging性能:

7200转的机械磁盘,测了几次,每秒的能写入日志的行数(每行就是一条日志),数量基本在 2800-3000 之间。此时,磁盘IO基本已经跑满。(在3.3Ghz的CPU上,CPU占用大约40%)。

python中日志logging模块的性能及多进程详解

Python的logging多进程:

python 的 logging模块,是线程安全的。但对于多进程的程序来说,怎么去写日志文件呢?我的解决办法是,每个进程的PID,写一个单独的日志文件。再用算法把所有进程的日志合并起来,生成新的日志。

提示:由于磁盘IO已经到达瓶颈,所以多进程并不能提高日志性能。高性能日志,需要用缓存,或者分布式日志。

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
python的random模块及加权随机算法的python实现方法
Jan 04 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
python爬虫框架scrapy实现模拟登录操作示例
Aug 02 Python
python异步存储数据详解
Mar 19 Python
Python3+OpenCV2实现图像的几何变换(平移、镜像、缩放、旋转、仿射)
May 13 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
基于Python数据分析之pandas统计分析
Mar 03 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 Python
浅谈python中的__init__、__new__和__call__方法
Jul 18 #Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 #Python
python对DICOM图像的读取方法详解
Jul 17 #Python
Python实现excel转sqlite的方法
Jul 17 #Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 #Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 #Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 #Python
You might like
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php curl发送请求实例方法
2019/08/01 PHP
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
17个Python小技巧分享
2015/01/23 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
python str字符串转uuid实例
2020/03/03 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
营销总经理岗位职责
2014/02/02 职场文书
销售主管竞聘书
2014/03/31 职场文书
分公司经理任命书
2014/06/05 职场文书
专题组织生活会方案
2014/06/15 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
会计稽核岗位职责
2015/04/13 职场文书
工作时间调整通知
2015/04/24 职场文书
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技