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 列表排序方法reverse、sort、sorted详解
Jan 22 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
Python import与from import使用及区别介绍
Sep 06 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 Python
flask框架配置mysql数据库操作详解
Nov 29 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
Python json转字典字符方法实例解析
Apr 13 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
基于Python测试程序是否有错误
May 16 Python
Python如何使用vars返回对象的属性列表
Oct 17 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+ajax 无刷新删除数据
2010/02/20 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
浅谈javascript语法和定时函数
2015/05/03 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
Cython 三分钟入门教程
2009/09/17 Python
python 链接和操作 memcache方法
2017/03/04 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
使用pip安装python库的多种方式
2019/07/31 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
护理专科毕业推荐信
2013/11/10 职场文书
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
竞聘书模板
2014/03/31 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
陈斌强事迹观后感
2015/06/17 职场文书
副校长2015年教育教学工作总结
2015/07/27 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫