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

发布时间 - 2026-01-11 02:23:27    点击率:

前言

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性能:

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

Python的logging多进程:

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

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

总结

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


# python  # logging多进程  # logging模块  # python中logging模块  # Python使用logging实现多进程安全的日志模块  # python logging多进程多线程输出到同一个日志文件的实战案例  # python 实现多进程日志轮转ConcurrentLogHandler  # python多进程下实现日志记录按时间分割  # python logging日志模块以及多进程日志详解  # 详解Python中logging日志模块在多进程环境下的使用  # python多进程日志以及分布式日志的实现方式  # 都是  # 将会  # 几次  # 成为一个  # 这篇文章  # 带了  # 并不能  # 就来  # 再用  # 谢谢大家  # 多说  # 高性能  # 解决办法  # 需要用  # 莫过于  # 要写  # 行数  # 也自  # 这时候  # 有疑问 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel storage目录权限问题_Laravel文件写入权限设置  香港服务器网站推广:SEO优化与外贸独立站搭建策略  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  Laravel如何配置Horizon来管理队列?(安装和使用)  佛山网站制作系统,佛山企业变更地址网上办理步骤?  北京企业网站设计制作公司,北京铁路集团官方网站?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  潮流网站制作头像软件下载,适合母子的网名有哪些?  Laravel如何使用Livewire构建动态组件?(入门代码)  如何用免费手机建站系统零基础打造专业网站?  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  JavaScript如何实现倒计时_时间函数如何精确控制  网站建设整体流程解析,建站其实很容易!  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何快速搭建高效可靠的建站解决方案?  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel怎么在Controller之外的地方验证数据  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何快速搭建高效WAP手机网站吸引移动用户?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  jQuery 常见小例汇总  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel如何使用Blade模板引擎?(完整语法和示例)  WEB开发之注册页面验证码倒计时代码的实现  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  怎么用AI帮你设计一套个性化的手机App图标?  开心动漫网站制作软件下载,十分开心动画为何停播?  网站制作免费,什么网站能看正片电影?  太平洋网站制作公司,网络用语太平洋是什么意思?  Laravel API资源类怎么用_Laravel API Resource数据转换  简单实现Android文件上传  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  常州企业网站制作公司,全国继续教育网怎么登录?  公司门户网站制作流程,华为官网怎么做?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Java垃圾回收器的方法和原理总结  教你用AI润色文章,让你的文字表达更专业  如何快速上传建站程序避免常见错误?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】