成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

分析 Python 腳本

qpwoeiru96 / 1792人閱讀

摘要:本文的原文是我有一個(gè)負(fù)責(zé)一個(gè)長(zhǎng)期運(yùn)行任務(wù)的腳本。因?yàn)槲蚁胫涝撃_本的大部分工作是在與哪個(gè)慢的外部系統(tǒng)進(jìn)行通信。有一個(gè)非常好用的內(nèi)建的分析器來回答這類問題。分析器基礎(chǔ)用法非常簡(jiǎn)單。更好的解決方案是把數(shù)據(jù)到文件中然后使用來分析它。

  

本文的原文是:Profiling Python Scripts

我有一個(gè)負(fù)責(zé)一個(gè)長(zhǎng)期運(yùn)行任務(wù)的 Python 腳本。這個(gè)腳本同其他三個(gè)系統(tǒng)通信 - 它從系統(tǒng) #1 和 #2 讀取數(shù)據(jù),合并它們?nèi)缓笤侔阉鼈兺扑偷较到y(tǒng) #3。這是下面的描述。問題是遷移運(yùn)行在我不滿意的一個(gè)地方。因?yàn)槲蚁胫涝撃_本的大部分工作是在與哪個(gè)慢的外部系統(tǒng)進(jìn)行通信。Python 有一個(gè)非常好用的內(nèi)建的分析器來回答這類問題。按照這篇文章來學(xué)習(xí)如何使用它。

分析器(Profiler)

基礎(chǔ)用法非常簡(jiǎn)單。假設(shè)你有一個(gè) myscript.py。使用 profiler 運(yùn)行它,你需要做的是:

$ python -m cProfile -o profile.out myscript.py 

它將運(yùn)行這個(gè)腳本并且 dump 這個(gè) debug 數(shù)據(jù)到 profile.out。你也可以省略 -o profile.out 來讓統(tǒng)計(jì)的 dumped 到腳本最后的 stdout。

Subprocesses

如果你的腳本使用了任何 subprocesses,事情就會(huì)變得有點(diǎn)復(fù)雜。以我來說,我對(duì)腳本的主流程不感興趣 - 它所做的所有事情就是派生(spawn)一些 worker 子進(jìn)程。我感興趣的是在 worker 中發(fā)生了什么。

讓我們假設(shè)你的代碼與此類似:

import multiprocessing
import time

def worker(num):
    time.sleep(3)
    print "Worker:", num

if __name__ == "__main__":
    for i in range(5):
        p = multiprocessing.Process(target=worker, args=(i,))
        p.start()

你需要引入另外一個(gè)間接層:

import multiprocessing
import cProfile
import time

def worker(num):
    time.sleep(3)
    print "Worker:", num

def profile_worker(num):
    cProfile.runctx("test(num)", globals(), locals(), "profile-%d.out" %num)


if __name__ == "__main__":
    for i in range(5):
        p = multiprocessing.Process(target=profile_worker, args=(i,))
        p.start()

就是這樣。這個(gè)腳本運(yùn)行之后,你將得到 profile-0.outprofile-4.out 這4個(gè)文件。

讀取分析數(shù)據(jù)

如果你忽略 -o profile.out 這時(shí)將在 stdout 得到統(tǒng)計(jì)數(shù)據(jù)。這不是一個(gè)完美的解決方案。更好的解決方案是把數(shù)據(jù) dump 到文件中然后使用 runsnake 來分析它。為了在 ubuntu 上安裝它,你需要 wxpython 包,然后你才可以使用 easy-install 安裝它。

$ sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-doc wx2.8-examples wx2.8-headers wx2.8-i18n
$ sudo easy-install SquareMap RunSnakeRun

由于某種原因我沒有在 virtualenv 中運(yùn)行工作。我需要一個(gè)全系統(tǒng)的 easy-install。有人抱怨缺失了 wx 模塊。我的系統(tǒng)是 ubuntu 12.04。

然后,就很簡(jiǎn)單了:

$ runsnake profile.out

你在不同的函數(shù)獲得了很好的統(tǒng)計(jì)分析,調(diào)用次數(shù)和累計(jì)時(shí)間。這些數(shù)據(jù)可以告訴你關(guān)于你 app 的很多東西。以我而言我獲悉了與其中一個(gè)系統(tǒng)通信花費(fèi)了 90% 的時(shí)間。從那里開始我可以優(yōu)化它。

來源

http://stackoverflow.com/questions/582336/how-can-you-profile-a-python-script

http://stackoverflow.com/questions/11041683/python-multiprocess-profiling

http://www.vrplumber.com/programming/runsnakerun/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/45357.html

相關(guān)文章

  • 調(diào)試和分析Python腳本

    摘要:調(diào)試器可幫助程序員分析完整的代碼。我們將使用標(biāo)準(zhǔn)庫中的模塊調(diào)試我們的腳本。例外是程序執(zhí)行期間發(fā)生的錯(cuò)誤。設(shè)置斷點(diǎn)并檢查堆棧幀,并列出源代碼。輸入以繼續(xù)調(diào)試。分析和計(jì)時(shí)程序分析程序意味著測(cè)量程序的執(zhí)行時(shí)間。的模塊用于分析程序。 showImg(https://segmentfault.com/img/remote/1460000018807029?w=902&h=442); 來源 | ...

    wenzi 評(píng)論0 收藏0
  • 說我菜?那好,我用Python制作電腦與手機(jī)游戲腳本來贏你

    摘要:我發(fā)現(xiàn)我的粉絲量漲的很慢,這次厚臉皮要波關(guān)注。這次做的是一個(gè)小巧的游戲腳本,本質(zhì)上它可以用于任意的電腦與手機(jī)游戲。分析這個(gè)游戲是上的別猜百塊兒,意思就是讓咱們只踩黑塊,然后會(huì)給我們彈一手音樂。越趨近于說明顏色越黑。 目錄 前言 分析(x0) 分析(x1) ????????那么如何去確定這個(gè)像...

    PascalXie 評(píng)論0 收藏0
  • Python 性能分析入門指南

    摘要:內(nèi)存泄漏往往發(fā)生在即使該對(duì)象不再使用的時(shí)候,你的程序還持有對(duì)該對(duì)象的引用。最快速發(fā)現(xiàn)內(nèi)存泄漏的方式就是使用一個(gè)由編寫的非常好的稱為的工具。通過這些工具和技術(shù)的武裝,你應(yīng)該可以獲取所有要求追蹤大多數(shù)內(nèi)存泄漏以及在程序快速識(shí)別瓶頸的信息。 注: 本文的原作者是 Huy Nguyen ,原文地址為 A guide to analyzing Python performance 雖然...

    TesterHome 評(píng)論0 收藏0
  • 收藏 | 10個(gè)可以快速用Python進(jìn)行數(shù)據(jù)分析的小技巧

    摘要:函數(shù)將單元格內(nèi)容以形式呈現(xiàn)。自動(dòng)評(píng)論代碼自動(dòng)注釋單元格中的選定行,再次命中組合將取消注釋相同的代碼行。如果需要恢復(fù)整個(gè)已刪除的單元格,請(qǐng)按或撤消刪除單元格。 showImg(https://segmentfault.com/img/remote/1460000019599210); 編譯:小七、蔣寶尚 一些小提示和小技巧可能是非常有用的,特別是在編程領(lǐng)域。有時(shí)候使用一點(diǎn)點(diǎn)黑客技術(shù),既可...

    silvertheo 評(píng)論0 收藏0
  • 學(xué)Python說簡(jiǎn)單真的簡(jiǎn)單,說難也難,就由過來人給你總結(jié)為什么吧。

    摘要:數(shù)據(jù)科學(xué)其實(shí)就是機(jī)器學(xué)習(xí),數(shù)據(jù)分析和數(shù)據(jù)可視化。機(jī)器學(xué)習(xí)通過實(shí)現(xiàn)算法,該算法能夠自動(dòng)檢測(cè)輸入中的模式。一般應(yīng)用于人臉識(shí)別語音識(shí)別熱門機(jī)器學(xué)習(xí)算法包括神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)支持向量機(jī)隨機(jī)森林進(jìn)行數(shù)據(jù)分析可視化進(jìn)行數(shù)據(jù)可視化時(shí),是非常熱門的庫。 ...

    HtmlCssJs 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<