Time of Update: 2018-12-06
Python日誌模組簡介使用Python寫程式,有時要用上日誌系統。特別是Python這樣的動態語言,很多錯誤都只能在啟動並執行時候才能發現,一個好的日誌系統對於Python程式相當重要。最簡單的解決方案當然是直接使用print輸出運行資訊。但是這樣太簡單了,沒有分級功能,如果在發布的時候想去掉調試用的運行資訊還得找出所有的print語句進行修改。再者,print只能輸出到控制台,想要輸出到檔案或者通過電子郵件發送到其他地方,一個
Time of Update: 2018-12-06
Python具有強大的擴充能力,我列出了50個很棒的Python模組,包含幾乎所有的需要:比如Databases,GUIs,Images, Sound, OS interaction, Web,以及其他。推薦收藏。Graphical interface wxPython http://wxpython.orgGraphical interface pyGtk http://www.pygtk.orgGraphical
Time of Update: 2018-12-06
線程與進程的不同之處在於,它們共用狀態、記憶體和資源。對於線程來說,這個簡單的區別既是它的優勢,又是它的缺點。一方面,線程是輕量級的,並且相互之間易於通訊,但另一方面,它們也帶來了包括死結、競爭條件和高複雜性在內的各種問題。幸運的是,由於 GIL 和隊列模組,與採用其他的語言相比,採用 Python 語言線上程實現的複雜性上要低得多。全域解譯器鎖 (Global Interpretor Lock) 說明 Python 解譯器並不是安全執行緒的。當前線程必須持有全域鎖,以便對 Python
Time of Update: 2018-12-06
os.chmod()方法 此方法通過數值模式更新路徑或檔案許可權。該模式可採取下列值或按位或運算組合之一:stat.S_ISUID: Set user ID on execution.stat.S_ISGID: Set group ID on execution.stat.S_ENFMT: Record locking enforced.stat.S_ISVTX: Save text image after execution.stat.S_IREAD: Read by
Time of Update: 2018-12-06
Python的logging模組介面仿log4j,概念上一致,使用上相當方便。利用logging.config.fileConfig(),可以將日誌的配置用檔案來描述,簡化了日誌的初始化。常式:# test.pyimport loggingimport logging.configlogging.config.fileConfig("logging.conf")#create loggerlogger = logging.getLogger("example")#"application"
Time of Update: 2018-12-06
前段時間有朋友讓幫忙做一個日誌監控的指令碼,要求如下:1.windows環境2.當匹配日誌關鍵字時會發出聲音,匹配的關鍵字不同,播放的聲音不同3.能做到即時響應於是從網上找了個windows版的tail,使用python簡單寫了個小指令碼,代碼如下:#!/usr/bin/env python# encoding: utf-8"""MonitorLog.pyUsage: MonitorLog.py ...Monitor the log file-f log file-h help
Time of Update: 2018-12-06
Scribe是跨語言的日誌彙總架構,如何在Python中使用它呢?其在Python中的簡單使用方法如下:#!/usr/bin/env python# encoding: utf8"""scribe_cat: A simple script for sending messages to scribe."""__author__ = 'zhoubo'import sysfrom scribe import scribefrom thrift.transport import TTransport,
Time of Update: 2018-12-06
使用Python logging模組已經有一段時間了,為了更好的理解log工作方式,看了一下其源碼,後總結如下:
Time of Update: 2018-12-06
Python提供多個建立子進程的模組,我比較習慣使用subprocess模組,因為在Python手冊中有這樣一段話: This module intends to replace several other, older modules and functions, such as:
Time of Update: 2018-12-06
我們經常會採用生產者/消費者關係的兩個線程來處理一個共用緩衝區的資料。例如一個生產者線程接受使用者資料放入一個共用緩衝區裡,等待一個消費者線程對資料取出處理。但是如果緩衝區的太小而生產者和消費者兩個非同步線程的速度不同時,容易出現一個線程等待另一個情況。為了儘可能的縮短共用資源並以相同速度工作的各線程的等待時間,我們可以使用一個“隊列”來提供額外的緩衝區。 建立一個“隊列”對象import Queuemyqueue = Queue.Queue(maxsize =
Time of Update: 2018-12-06
不久前,在互連網上出現了一篇有趣的文章,講的是對於同一個問題,不同層次的Python程式員編出的Python代碼顯示出了不同的風格,代碼都很簡單,有趣。 編程新手def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) print factorial(6)一年編程經驗(學Pascal的)def factorial(x): result = 1 i = 2
Time of Update: 2018-12-06
1.有兩種方式來實現並發性,一種方式是讓每個“任務”或“進程”在單獨的內在空間中工作,每個都有自已的工作記憶體地區。不過,雖然進程可在單獨的記憶體空間中執行,但除非這些進程在單獨的處理器上執行,否則,實際並不是“同時”啟動並執行。是由作業系統把處理器的時間片分配給一個進程,用完時間片後就需退出處理器等待另一個時間片的到來。另一種方式是在在程式中指定多個“執行線程”,讓它們在相同的記憶體空間中工作。這稱為“多執行緒”。線程比進程更有效,因為作業系統不必為每個線程建立單獨的記憶體空間。2.
Time of Update: 2018-12-06
#!/usr/bin/env python# encoding: utf8import os, sys#global definition# base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]base = [str(x) for x in range(10)] + [chr(x) for x in range(ord('A'),ord('A')+6)]def bin2dec(str_num): """二進位轉十進位"""
Time of Update: 2018-12-06
大家都知道Python的線程實際上是使用單核在運行,所以大多數想使用多核來運算,Python自己也提供了很多分布式架構,比如pp,pprocess等等,其中有網路分布式,也有單機分布式,詳情可參見:http://wiki.python.org/moin/ParallelProcessing其中本人也研究過幾個分布式架構,感覺還是非常強大的,但多多少少存在不足(主要取決於需求)和一定複雜度(架構學習),工作中涉及到一個很簡單的使用多核計算模型,自己寫了一個使用多核的外殼和大家分享一下:#!/usr
Time of Update: 2018-12-06
多個執行線程經常要共用資料,如果僅僅讀取共用資料還好,但是如果多個線程要修改共用資料的話就可能出現無法預料的結果。 同步“鎖”機制鎖對象用threading.RLock類建立mylock = threading.RLock()如何使用鎖來同步線程呢?線程可以使用鎖的acquire() (獲得)方法,這樣鎖就進入“locked”狀態。每次只有一個線程可以獲得鎖。如果當另一個線程試圖獲得這個鎖的時候,就會被系統變為“blocked”狀態,直到那個擁有鎖的線程調用鎖的release() (釋放)方法,
Time of Update: 2018-12-06
在項目中遇到一個很糟糕的問題,運行一個Python服務指令碼,把伺服器跑死了,以前以為開的進程過多,進程中因批量處理,導致記憶體和交換分區耗光引起的。後來才發現,確實是記憶體和交換分區無空間導致的死機,但卻不是因為多進程分析引起的。從網上看了很多資料,相關資訊並不多,最後確定是由於Python對大對象記憶體的釋放引起的。在一個對象的引用計數減為0時,與該對象對應的解構函式就會被調用,但是要特別注意的是,調用解構函式並不意味著最終一定會調用free釋放記憶體空間,如果真是這樣的話,那頻繁地申請、釋
Time of Update: 2018-12-06
MTV裡的M代表模型。 Django模型是用Python代碼形式表述的資料在資料庫中的定義。對資料層來說它等同於 CREATE TABLE 語句,只不過執行的是Python代碼而不是 SQL,而且還包含了比資料庫欄位定義更多的含義。Django用模型在後台執行SQL代碼並把結果用Python的資料結構來描述。 Django也使用模型來呈現SQL無法處理的進階概念。1 from django.db import models2 3 class Publisher(models.Model):4
Time of Update: 2018-12-06
Python 用來做一些簡單的工作還是不錯的,一個練手的代碼,抓取百度關鍵字搜尋的結果 # coding=utf-8import urllib2 as urlimport stringimport urllibimport redef baidu_search(keyword): p= {'wd': keyword} res=url.urlopen("http://www.baidu.com/s?"+urllib.urlencode(p)) html=res.read()
Time of Update: 2018-12-06
一、input()與raw_input()的區別 代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 >>> buck = input("Enter your name: ") 2 Enter your name: liu 3 4 Traceback (most recent call last): 5 File
Time of Update: 2018-12-06
一、string time datetime之間的相互轉換1、string->time>>> time.strptime('2012-08-04', '%Y-%m-%d')time.struct_time(tm_year=2012, tm_mon=8, tm_mday=4, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=217, tm_isdst=-1)2、time->string>>>