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用户注册登录功能快速实现【流程】

