Time of Update: 2016-06-10
眾所周知,Python的平行處理能力很不理想。我認為如果不考慮線程和GIL的標準參數(它們大多是合法的),其原因不是因為技術不到位,而是我們的使用方法不恰當。大多數關於Python線程和多進程的教材雖然都很出色,但是內容繁瑣冗長。它們的確在開篇鋪陳了許多有用資訊,但往往都不會涉及真正能提高日常工作的部分。經典例子DDG上以“Python threading tutorial
Time of Update: 2016-06-10
(ob1 is ob2) 等價於 (id(ob1) == id(ob2))首先id函數可以獲得對象的記憶體位址,如果兩個對象的記憶體位址是一樣的,那麼這兩個對象肯定是一個對象。和is是等價的。Python原始碼為證。 static PyObject * cmp_outcome(int op, register PyObject *v, register PyObject *w){ int res = 0; switch (op) { case PyCmp_IS: res = (v == w);
Time of Update: 2016-06-10
思考一下下面的程式碼片段: def foo(numbers=[]): numbers.append(9) print numbers在這裡,我們定義了一個 list (預設為空白),給它加入9並且列印出來。 >>> foo()[9]>>> foo(numbers=[1,2])[1, 2, 9]>>> foo(numbers=[1,2,3])[1, 2, 3, 9]看起來還行吧?可是當我們不輸入number 參數來調用 foo 函數時,神奇的事情發生了: >>> foo() # first
Time of Update: 2016-06-10
通常,當我們定義了一個全域變數(好吧,我這樣說是因為講解的需要——全域變數是不好的),我們用一個函數訪問它們是能被Python理解的: bar = 42def foo(): print bar在這裡,我們在foo函數裡使用了全域變數bar,然後它也如預想的能夠正常運行: >>> foo()42這樣做很酷。通常,我們在使用了這個特性之後就想在所有的代碼裡用上它。如果像以下的例子中使用的話還是能夠正常啟動並執行: bar = [42]def foo(): bar.append(0)foo() >
Time of Update: 2016-06-10
交換變數 x = 6y = 5 x, y = y, x print x>>> 5print y>>> 6if 語句在行內 print "Hello" if True else "World">>> Hello串連下面的最後一種方式在綁定兩個不同類型的對象時顯得很cool。nfc = ["Packers", "49ers"]afc = ["Ravens", "Patriots"]print nfc + afc>>> ['Packers', '49ers', 'Ravens', 'Patriots'
Time of Update: 2016-06-10
本文執行個體講述了python使用sorted函數對列表進行排序的方法。分享給大家供大家參考。具體如下:python提供了sorted函數用於對列表進行排序,並且可以按照正序或者倒序進行排列#建立一個數字組成的列表numbers = [5, 1, 4, 3, 2, 6, 7, 9] #輸出排序後的數字數組print sorted(numbers) #輸出原始數組,並未被改變print numbers my_string = ['aa', 'BB', 'zz', 'CC', 'dd', "EE"]
Time of Update: 2016-06-10
使用 Python 內建的defaultdict 方法可以輕鬆定義一個樹的資料結構。簡單的說樹也可以是一個字典資料結構 def tree(): return defaultdict(tree)這就是全部,就一行代碼。如果你繼續下面的代碼,需要先引入 from collections import defaultdict執行個體JSON-esque現在我們建立一個 JSON-esque 嵌套字典無需顯式的建立子字典: users = tree()users['harold']['username'
Time of Update: 2016-06-10
本文執行個體總結了python中字典dict常用操作方法。分享給大家供大家參考。具體如下:下面的python代碼展示python中字典的常用操作,字典在python開發中有著舉足輕重的地位,掌握字典操作相當重要#建立一空字典x = {}#建立包含三個項目的字典x = {"one":1, "two":2,
Time of Update: 2016-06-10
繼上一篇文章使用xlrd來讀Excel之後,這一篇文章就來介紹下,如何來寫Excel,寫Excel我們需要使用第三方庫xlwt,和xlrd一樣,xlrd表示read xls,xlwt表示write xls,同樣目前版本只支援97-03版本的Excel。xlwt下載:xlwt 0.7.4安裝xlwt安裝方式一樣是python setup.py install就可以了,或者直接解壓到你的工程目錄中。API介紹擷取一個xls執行個體複製代碼 代碼如下:xls =
Time of Update: 2016-06-10
使用了Python一段時間後,可以說Python的基本單位就是模組了,在使用模組的時候我們一般會使用通過import語句來將其匯入,但是我們在沒有匯入任何模組的時候,我們卻能使用這樣的一些函數:int(),str(),len(),range(),以及使用try except語句來捕獲異常,那麼這些又是從哪兒來的呢。基本Python在啟動時會自動匯入內建的__builtin__和exceptions這兩個模組,
Time of Update: 2016-06-10
以前在windows下一直用的idel帶的功能調試python程式,在linux下沒調試過。(很多時候只是print)就從網上尋找一下~方法:複製代碼 代碼如下:python -m pdb a.pya.py是python檔案。(Pdb)模式下的常用命令:q退出debugh 即help,列印所有可以命令h w列印命令 w
Time of Update: 2016-06-10
首先要說的是python中的除法運算,在python 2.5版本中存在兩種除法運算,即所謂的true除法和floor除法。當使用x/y形式進行除法運算時,如果x和y都是整形,那麼運算的會對結果進行截取,取運算的整數部分,比如2/3的運算結果是0;如果x和y中有一個是浮點數,那麼會進行所謂的true除法,比如2.0/3的結果是 0.66666666666666663。另外一種除法是採用x//y的形式,那麼這裡採用的是所謂floor除法,即得到不大於結果的最大整數值,這個運算時與運算元無關的。比如2
Time of Update: 2016-06-10
Celery (芹菜)是基於Python開發的分布式任務隊列。它支援使用任務隊列的方式在分布的機器/進程/線程上執行任務調度。架構設計 Celery的架構由三部分組成,訊息中介軟體(message broker),任務執行單元(worker)和任務執行結果儲存(task result store)組成。1. 訊息中介軟體 Celery本身不提供Message Service,但是可以方便的和第三方提供的訊息中介軟體整合。包括,RabbitMQ, Redis, MongoDB
Time of Update: 2016-06-10
前面已經示範了Python:使用threading模組實現多線程編程二兩種方式起線程和Python:使用threading模組實現多線程編程三threading.Thread類的重要函數,這兩篇文章的樣本都是示範了互不相干的獨立線程,現在我們考慮這樣一個問題:假設各個線程需要訪問同一公用資源,我們的代碼該怎麼寫?複製代碼 代碼如下:''' Created on 2012-9-8 @author: walfred @module: thread.ThreadTest3 ''' import
Time of Update: 2016-06-10
本文執行個體講述了python實現根據使用者輸入從電影網站擷取影片資訊的方法。分享給大家供大家參考。具體如下:這段python代碼主要示範了使用者終端輸入,Regex,網頁抓取等#!/usr/bin/env python27#Importing the modulesfrom BeautifulSoup import BeautifulSoupimport sysimport urllib2import reimport json#Ask for movie titletitle =
Time of Update: 2016-06-10
函數:len()1:作用:返回字串、列表、字典、元組等長度2:文法:len(str)3:參數:str:要計算的字串、列表、字典、元組等4:傳回值:字串、列表、字典、元組等元素的長度5:執行個體5.1、計算字串的長度:>>> s = "hello good boy doiido">>> len(s)215.2、計算資料行表的元素個數:>>> l = ['h','e','l','l','o']>>> len(l)55.3、計算字典的總長度(即索引值對總數):>>> d =
Time of Update: 2016-06-10
線程池的概念是什嗎?在物件導向編程中,建立和銷毀對象是很費時間的,因為建立一個對象要擷取記憶體資源或者其它更多資源。在Java中更是 如此,虛擬機器將試圖跟蹤每一個對象,以便能夠在對象銷毀後進行記憶體回收。所以提高服務程式效率的一個手段就是儘可能減少建立和銷毀對象的次數,特別是一些
Time of Update: 2016-06-10
函數:string.join()Python中有join()和os.path.join()兩個函數,具體作用如下: join(): 連接字串數組。將字串、元組、列表中的元素以指定的字元(分隔字元)串連產生一個新的字串 os.path.join(): 將多個路徑組合後返回一、函數說明1、join()函數文法:
Time of Update: 2016-06-10
今天我們講一下用Python寫的GUI小程式。一個小鬧鐘(只是工具提示,沒有聲音哦)讓我們先介紹這個鬧鐘如何奇葩。需要通過命令列啟動。沒有標題列。沒菜單。甚至沒有關閉按鈕。沒有運行介面。看到這裡想必大家要問了,何必去做一個這樣弱爆了的程式呢。顯然,教育意義大於其實際用處。像其他的模組一樣,QT介面包是需要載入的。我們用到了命令列輸入,所以,sys模組也是必須的。用到了時間,但是我們不需要使用time模組,我們用QT提供的QTime模組。讓我們先寫import 語句部分。 import
Time of Update: 2016-06-10
基本思路就是,使用MIMEMultipart來標示這個郵件是多個部分組成的,然後attach各個部分。如果是附件,則add_header加入附件的聲明。在python中,MIME的這些對象的繼承關係如下。MIMEBase |-- MIMENonMultipart |-- MIMEApplication |-- MIMEAudio |-- MIMEImage |-- MIMEMessage |-- MIMEText