最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

測試代碼如下:

#! /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" 

結(jié)果為:

Start test ....

2973.0 rows per second


Python的logging性能:

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

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

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

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

總結(jié)

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

相關(guān)文章

  • django2筆記之路由path語法的實(shí)現(xiàn)

    django2筆記之路由path語法的實(shí)現(xiàn)

    這篇文章主要介紹了django2筆記之路由path語法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python 給圖像添加透明度(alpha通道)

    python 給圖像添加透明度(alpha通道)

    這篇文章主要介紹了python 給圖像添加透明度,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 淺述python中深淺拷貝原理

    淺述python中深淺拷貝原理

    Python中,對象的賦值,拷貝(深/淺拷貝)之間是有差異的,如果使用的時候不注意,就可能產(chǎn)生意外的結(jié)果,其實(shí)這個是由于共享內(nèi)存導(dǎo)致的結(jié)果,下面我們來簡單談下Python中的深拷貝和淺拷貝。
    2018-09-09
  • 最新評論

    澄江县| 安塞县| 福安市| 锦州市| 郧西县| 荔波县| 湛江市| 虎林市| 靖边县| 靖远县| 稷山县| 原阳县| 拉萨市| 景谷| 沂南县| 万源市| 三门峡市| 仲巴县| 孝义市| 平罗县| 双辽市| 秦皇岛市| 长宁县| 清苑县| 衡山县| 乌鲁木齐市| 和林格尔县| 寻甸| 张家口市| 历史| 平南县| 西吉县| 靖西县| 景宁| 仁布县| 德安县| 弥渡县| 团风县| 炉霍县| 平原县| 桃园市|