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运行效率的方法之间的对比
Apr 03 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
python非递归全排列实现方法
Apr 10 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
Python各类图像库的图片读写方式总结(推荐)
Feb 23 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
使用Python将图片转正方形的两种方法实例代码详解
Apr 29 Python
Django表单提交后实现获取相同name的不同value值
May 14 Python
Python3爬虫中Ajax的用法
Jul 10 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
深度学习小工程练习之垃圾分类详解
Apr 14 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 pack与unpack 摸板字符字符含义
2009/10/29 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
laravel框架的安装与路由实例分析
2019/10/11 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
ext实现完整的登录代码
2008/08/08 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)
2019/05/07 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
Python 基础知识之字符串处理
2017/01/06 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
Python微信公众号开发平台
2018/01/25 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
化工专业推荐信范文
2013/11/28 职场文书
大学军训自我鉴定
2013/12/15 职场文书
创业计划书如何编写
2014/02/06 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书