采用Psyco實(shí)現(xiàn)python執(zhí)行速度提高到與編譯語(yǔ)言一樣的水平
本文實(shí)例講述了采用Psyco實(shí)現(xiàn)python執(zhí)行速度提高到與編譯語(yǔ)言一樣的水平的方法,分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
一、安裝Psyco很簡(jiǎn)單,它有兩種安裝方式,一種是源碼方式,一種是二進(jìn)制碼方式:
如果用源碼方式安裝,你需在源碼的目錄中調(diào)用python setup.py install命令編譯生成psyco子目錄,再把該子目錄整個(gè)拷貝到python的site-packages目錄下。
如果用二進(jìn)制碼方式安裝,按這個(gè)網(wǎng)址列表中的python與psyco版本對(duì)應(yīng)表下載合適的二進(jìn)制文件,解壓后會(huì)生成一個(gè)psyco-1.x的目錄,把該目錄下的psyco目錄整個(gè)拷貝到python的site-packages目錄下即可。
二、使用說(shuō)明,在需要做效率優(yōu)化的源文件前面加入以下兩句:
psyco.full()
另外,使用psyco.profile()可以對(duì)大程序進(jìn)行適當(dāng)分析,以確定哪些函數(shù)最值得編譯。
psyco.log()函數(shù)用來(lái)記錄profile()得到的信息,下次就可以運(yùn)行就能更快一點(diǎn)。
psyco.bind(myfunc)指定對(duì)函數(shù)myfunc進(jìn)行編譯,可以做到比f(wàn)ull()更精細(xì)的控制。
psyco.proxy(f)創(chuàng)建一個(gè)新的函數(shù),它的代碼是由f編譯得到二進(jìn)制碼
三、例子:
psyco_test.py文件代碼如下:
# Filename:psyco_test.py
import math, timeit, psyco
def TestA():
res, loopcnt = 0.0, 100
for i in range(loopcnt):
for j in range(loopcnt):
for k in range(loopcnt):
res = res + math.sin(i + j + k)
if __name__ == '__main__':
TestB = psyco.proxy(TestA)
ta = timeit.Timer("TestA()", "from __main__ import TestA")
tb = timeit.Timer("TestB()", "from __main__ import TestB")
print ("TestA(): %.2fs" % (ta.timeit(10)))
print ("TestB(): %.2fs" % (tb.timeit(10)))
運(yùn)行結(jié)果如下:
TestA(): 4.41s
TestB(): 1.63s
使用psyco處理過的函數(shù)執(zhí)行速度快了4倍左右, 跟作者宣稱的差不多。
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python實(shí)現(xiàn)視頻字幕時(shí)間軸格式轉(zhuǎn)換的示例
本文主要介紹了Python實(shí)現(xiàn)視頻字幕時(shí)間軸格式轉(zhuǎn)換的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
Python使用背景差分器實(shí)現(xiàn)運(yùn)動(dòng)物體檢測(cè)
目前,許多運(yùn)動(dòng)檢測(cè)技術(shù)都是基于簡(jiǎn)單的背景差分概念的,因此本文將基于背景差分器(MOG背景差分器和KNN背景差分器)來(lái)實(shí)現(xiàn)運(yùn)動(dòng)物體的檢測(cè),感興趣的可以了解一下2022-02-02
python啟動(dòng)應(yīng)用程序和終止應(yīng)用程序的方法
今天小編就為大家分享一篇python啟動(dòng)應(yīng)用程序和終止應(yīng)用程序的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-06-06
Python在for循環(huán)里處理大數(shù)據(jù)的推薦方法實(shí)例
這篇文章主要介紹了Python在for循環(huán)里處理大數(shù)據(jù)的推薦方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
python代碼實(shí)現(xiàn)TSNE降維數(shù)據(jù)可視化教程
今天小編就為大家分享一篇python代碼實(shí)現(xiàn)TSNE降維數(shù)據(jù)可視化教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-02-02
解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問題
這篇文章主要介紹了解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
用 Python 元類的特性實(shí)現(xiàn) ORM 框架
利用 Python 元類的特性實(shí)現(xiàn) ORM 框架的 insert 功能,通過操作類對(duì)象,對(duì)數(shù)據(jù)表進(jìn)行數(shù)據(jù)增加操作。由于 ORM 比較復(fù)雜,也不要重復(fù)造輪子,就完成一個(gè) insert 相類似的ORM,理解其中的道理即可。2021-05-05

