高性能Python-Namespaces

算是一個小Tips

當(dāng)一個變量腿堤、函數(shù)阀坏、module被Python引用時,Python有一個順序去尋找這些對象笆檀。

  • 首先忌堂,先尋找locals(),速度很快酗洒,非dictionaries查詢
  • 其次士修,再尋找globals()枷遂,速度居中,dictionaries查詢
  • 最后棋嘲,尋找builtin酒唉,速度最慢

例子:

import math
from math import sin

def test1(x):
    return math.sin(x)

def test2(x):
    return sin(x)

def test3(x, sin=math.sin):
    return sin(x)

#import timeit
#print(timeit.timeit('test1(100)', 'from __main__ import test1', number = 1000000))
#print(timeit.timeit('test2(100)', 'from __main__ import test2', number = 1000000))
#print(timeit.timeit('test3(100)', 'from __main__ import test3', number = 1000000))

import dis
print(dis.dis(test1))
print(dis.dis(test2))
print(dis.dis(test3))
(env) localhost:highperf wenyong$ python tname.py 
  6           0 LOAD_GLOBAL              0 (math)
              3 LOAD_ATTR                1 (sin)
              6 LOAD_FAST                0 (x)
              9 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
             12 RETURN_VALUE
None
  9           0 LOAD_GLOBAL              0 (sin)
              3 LOAD_FAST                0 (x)
              6 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
              9 RETURN_VALUE
None
 12           0 LOAD_FAST                1 (sin)
              3 LOAD_FAST                0 (x)
              6 CALL_FUNCTION            1 (1 positional, 0 keyword pair)
              9 RETURN_VALUE
None
  • test1, 兩次dictionaries查詢,一次查詢math封字,一次查詢math.sin黔州,速度最慢
  • test2耍鬓,一次dictionaries查詢(math.sin)阔籽,速度居中
  • test3,一次local查詢牲蜀,速度最快

test3的編碼不太pythonic笆制,盡可能采用test2的方法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涣达,隨后出現(xiàn)的幾起案子在辆,更是在濱河造成了極大的恐慌,老刑警劉巖度苔,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匆篓,死亡現(xiàn)場離奇詭異,居然都是意外死亡寇窑,警方通過查閱死者的電腦和手機(jī)鸦概,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來甩骏,“玉大人窗市,你說我怎么就攤上這事∫眩” “怎么了咨察?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長福青。 經(jīng)常有香客問我摄狱,道長,這世上最難降的妖魔是什么无午? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任媒役,我火速辦了婚禮,結(jié)果婚禮上指厌,老公的妹妹穿的比我還像新娘刊愚。我一直安慰自己,他們只是感情好踩验,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布鸥诽。 她就那樣靜靜地躺著商玫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪牡借。 梳的紋絲不亂的頭發(fā)上拳昌,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機(jī)與錄音钠龙,去河邊找鬼炬藤。 笑死,一個胖子當(dāng)著我的面吹牛碴里,可吹牛的內(nèi)容都是我干的沈矿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咬腋,長吁一口氣:“原來是場噩夢啊……” “哼羹膳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起根竿,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤陵像,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后寇壳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體醒颖,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年壳炎,在試婚紗的時候發(fā)現(xiàn)自己被綠了泞歉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡冕广,死狀恐怖疏日,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撒汉,我是刑警寧澤沟优,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站睬辐,受9級特大地震影響挠阁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜溯饵,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一侵俗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丰刊,春花似錦隘谣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掌栅。三九已至,卻和暖如春码泛,著一層夾襖步出監(jiān)牢的瞬間猾封,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工噪珊, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留晌缘,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓痢站,卻偏偏與公主長得像磷箕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瑟押,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.元類 1.1.1類也是對象 在大多數(shù)編程語言中搀捷,類就是一組用來描述如何生成一個對象的代碼段。在Python中這...
    TENG書閱讀 1,275評論 0 3
  • 前言 Python的創(chuàng)始人為Guido van Rossum多望。1989年圣誕節(jié)期間,在阿姆斯特丹氢烘,Guido為了打...
    依依玖玥閱讀 3,569評論 6 37
  • MongoDB常用操作 一怀偷、查詢 find方法 查詢所有的結(jié)果: select * from users;===d...
    止風(fēng)者閱讀 603評論 1 3
  • Python進(jìn)階框架 希望大家喜歡,點贊哦首先感謝廖雪峰老師對于該課程的講解 一播玖、函數(shù)式編程 1.1 函數(shù)式編程簡...
    Gaolex閱讀 5,499評論 6 53
  • 2017年1月1日椎工,新年第一天,小晴蜀踏。 七點二十维蒙。照例鬧鐘叫醒,問候早安果覆。起床颅痊,洗漱,早餐局待,收拾斑响,出門。 九點钳榨。準(zhǔn)...
    何夕何處何人閱讀 413評論 0 3