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求两个list的差集、交集与并集的方法
Nov 01 Python
Python的字典和列表的使用中一些需要注意的地方
Apr 24 Python
启动Atom并运行python文件的步骤
Nov 09 Python
python调用外部程序的实操步骤
Mar 04 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
浅析Python语言自带的数据结构有哪些
Aug 27 Python
如何基于Python创建目录文件夹
Dec 31 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
May 18 Python
基于Python实现对比Exce的工具
Apr 07 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
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
关于Yii中模型场景的一些简单介绍
2019/09/22 PHP
图片自动更新(说明)
2006/10/02 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
jquery队列queue与原生模仿其实现方法分享
2014/03/25 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
JScript实现表格的简单操作
2017/08/15 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
Vue前端判断数据对象是否为空的实例
2020/09/02 Javascript
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
python二分查找算法的递归实现方法
2016/05/12 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
python urllib爬虫模块使用解析
2019/09/05 Python
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
药物学专业学生的自我评价
2013/10/27 职场文书
模具设计与制造专业推荐信
2014/02/16 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
访谈节目策划方案
2014/05/15 职场文书
入党推优材料
2014/06/02 职场文书
分公司总经理岗位职责
2014/07/30 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
招商银行收入证明
2015/06/17 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python