欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中日志logging模塊的性能及多進(jìn)程詳解

 更新時(shí)間:2017年07月18日 09:32:18   作者:常城  
使用Python來寫后臺(tái)任務(wù)時(shí),時(shí)常需要使用輸出日志來記錄程序運(yùn)行的狀態(tài),并在發(fā)生錯(cuò)誤時(shí)將錯(cuò)誤的詳細(xì)信息保存下來,以別調(diào)試和分析。Python的logging模塊就是這種情況下的好幫手。本文就介紹了python中日志logging模塊性能及多進(jìn)程的相關(guān)資料,需要的朋友可以參考下。

前言

Java 中最通用的日志模塊莫過于 Log4j 了,在 python 中,也自帶了 logging 模塊,該模塊的用法其實(shí)和 Log4j 類似。日志是記錄操作的一種好方式。但是日志,基本都是基于文件的,也就是要寫到磁盤上的。這時(shí)候,磁盤將會(huì)成為一個(gè)性能瓶頸。對(duì)于普通的服務(wù)器硬盤(機(jī)械磁盤,非固態(tài)硬盤),Python日志的性能瓶頸是多少呢?今天我們就來測一下。下面話不多說,來一起看看詳細(xì)的介紹:

測試代碼如下:

#! /usr/bin/env python 
#coding=utf-8 
 
# ============================ 
# Describe : 給平臺(tái)提供的日志 
# 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 # 測試時(shí)間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" 

結(jié)果為:

Start test ....

2973.0 rows per second


Python的logging性能:

7200轉(zhuǎn)的機(jī)械磁盤,測了幾次,每秒的能寫入日志的行數(shù)(每行就是一條日志),數(shù)量基本在 2800-3000 之間。此時(shí),磁盤IO基本已經(jīng)跑滿。(在3.3Ghz的CPU上,CPU占用大約40%)。

Python的logging多進(jìn)程:

python 的 logging模塊,是線程安全的。但對(duì)于多進(jìn)程的程序來說,怎么去寫日志文件呢?我的解決辦法是,每個(gè)進(jìn)程的PID,寫一個(gè)單獨(dú)的日志文件。再用算法把所有進(jìn)程的日志合并起來,生成新的日志。

提示:由于磁盤IO已經(jīng)到達(dá)瓶頸,所以多進(jìn)程并不能提高日志性能。高性能日志,需要用緩存,或者分布式日志。

總結(jié)

以上就是這篇文章的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Django教程筆記之中間件middleware詳解

    Django教程筆記之中間件middleware詳解

    Django 中的中間件(middleware),是一個(gè)鑲嵌到Django的request/response處理機(jī)制中的一個(gè)hooks框架,是一個(gè)修改django全局輸入輸出的一個(gè)底層插件系統(tǒng)。這篇文章主要給大家介紹了關(guān)于Django教程筆記之中間件middleware的相關(guān)資料,需要的朋友可以參考下
    2018-08-08
  • 使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層

    使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層

    今天小編就為大家分享一篇使用Tensorflow實(shí)現(xiàn)可視化中間層和卷積層,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • TensorFlow入門使用 tf.train.Saver()保存模型

    TensorFlow入門使用 tf.train.Saver()保存模型

    這篇文章主要介紹了TensorFlow入門使用 tf.train.Saver()保存模型,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Python hashlib和hmac模塊使用方法解析

    Python hashlib和hmac模塊使用方法解析

    這篇文章主要介紹了Python hashlib和hmac模塊使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Python中使用matplotlib繪制各類圖表示例詳解

    Python中使用matplotlib繪制各類圖表示例詳解

    這篇文章主要給大家介紹了關(guān)于Python中使用matplotlib繪制各類圖表的相關(guān)資料,matplotlib是python的一個(gè)庫,內(nèi)部儲(chǔ)存了大量的函數(shù)用于繪制圖像,通常會(huì)與pandas和numpy庫一起使用,平常我們通常只是用里面的pyplot模塊,需要的朋友可以參考下
    2023-10-10
  • 詳解python環(huán)境安裝selenium和手動(dòng)下載安裝selenium的方法

    詳解python環(huán)境安裝selenium和手動(dòng)下載安裝selenium的方法

    這篇文章主要介紹了詳解python環(huán)境安裝selenium和手動(dòng)下載安裝selenium的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Python爬取騰訊疫情實(shí)時(shí)數(shù)據(jù)并存儲(chǔ)到mysql數(shù)據(jù)庫的示例代碼

    Python爬取騰訊疫情實(shí)時(shí)數(shù)據(jù)并存儲(chǔ)到mysql數(shù)據(jù)庫的示例代碼

    這篇文章主要介紹了Python爬取騰訊疫情實(shí)時(shí)數(shù)據(jù)并存儲(chǔ)到mysql數(shù)據(jù)庫的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Centos Python2 升級(jí)到Python3的簡單實(shí)現(xiàn)

    Centos Python2 升級(jí)到Python3的簡單實(shí)現(xiàn)

    下面小編就為大家?guī)硪黄狢entos Python2 升級(jí)到Python3的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • Python Django2 model 查詢介紹(條件、范圍、模糊查詢)

    Python Django2 model 查詢介紹(條件、范圍、模糊查詢)

    這篇文章主要介紹了Python Django2 model 查詢介紹(條件、范圍、模糊查詢),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 基于pygame實(shí)現(xiàn)童年掌機(jī)打磚塊游戲

    基于pygame實(shí)現(xiàn)童年掌機(jī)打磚塊游戲

    這篇文章主要為大家詳細(xì)介紹了基于pygame實(shí)現(xiàn)童年掌機(jī)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02

最新評(píng)論