采用Psyco實現(xiàn)python執(zhí)行速度提高到與編譯語言一樣的水平
本文實例講述了采用Psyco實現(xiàn)python執(zhí)行速度提高到與編譯語言一樣的水平的方法,分享給大家供大家參考。具體實現(xiàn)方法如下:
一、安裝Psyco很簡單,它有兩種安裝方式,一種是源碼方式,一種是二進制碼方式:
如果用源碼方式安裝,你需在源碼的目錄中調(diào)用python setup.py install命令編譯生成psyco子目錄,再把該子目錄整個拷貝到python的site-packages目錄下。
如果用二進制碼方式安裝,按這個網(wǎng)址列表中的python與psyco版本對應(yīng)表下載合適的二進制文件,解壓后會生成一個psyco-1.x的目錄,把該目錄下的psyco目錄整個拷貝到python的site-packages目錄下即可。
二、使用說明,在需要做效率優(yōu)化的源文件前面加入以下兩句:
psyco.full()
另外,使用psyco.profile()可以對大程序進行適當分析,以確定哪些函數(shù)最值得編譯。
psyco.log()函數(shù)用來記錄profile()得到的信息,下次就可以運行就能更快一點。
psyco.bind(myfunc)指定對函數(shù)myfunc進行編譯,可以做到比full()更精細的控制。
psyco.proxy(f)創(chuàng)建一個新的函數(shù),它的代碼是由f編譯得到二進制碼
三、例子:
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)))
運行結(jié)果如下:
TestA(): 4.41s
TestB(): 1.63s
使用psyco處理過的函數(shù)執(zhí)行速度快了4倍左右, 跟作者宣稱的差不多。
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
Python打開指定網(wǎng)頁使用requests模塊爬蟲示例詳解
這篇文章主要介紹了Python打開指定網(wǎng)頁使用requests模塊爬蟲的示例,Python?requests是一個常用的HTTP請求庫,可以方便地向網(wǎng)站發(fā)送HTTP請求,并獲取響應(yīng)結(jié)果,requests模塊比urllib模塊更簡潔,感興趣的朋友可以參考下2024-02-02利用python將?Matplotlib?可視化插入到?Excel表格中
這篇文章主要介紹了利用python將?Matplotlib?可視化?插入到?Excel?表格中,通過使用xlwings模塊來控制Excel插入圖表,具體詳細需要的朋友可以參考下面文章內(nèi)容2022-06-06python皮爾遜相關(guān)性數(shù)據(jù)分析分析及實例代碼
這篇文章主要為大家介紹了python皮爾遜相關(guān)性分析及實例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02python global的創(chuàng)建和修改實例講解
在本篇文章里小編給大家整理了一篇關(guān)于python global的創(chuàng)建和修改實例講解內(nèi)容,有興趣的朋友們可以學習下。2021-09-09