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处理字符串之isspace()方法的使用
May 19 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
django基于存储在前端的token用户认证解析
Aug 06 Python
tensorflow模型转ncnn的操作方式
May 25 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
python引入其他文件夹下的py文件具体方法
May 23 Python
python3实现常见的排序算法(示例代码)
Jul 04 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中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
微信小程序搜索组件wxSearch实例详解
2017/06/08 Javascript
深入浅出理解JavaScript闭包的功能与用法
2018/08/01 Javascript
小程序自定义日历效果
2018/12/29 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
机械设计及其自动化求职推荐信
2014/02/17 职场文书
宣传工作经验材料
2014/06/02 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
2014年人大工作总结
2014/12/10 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
中秋客户感谢信
2015/01/22 职场文书
高考学习决心书
2015/02/04 职场文书