numba能夠極大的提高python在計算方面的效能。是不是所有的python**上,都可以加上numba.jit裝飾器?答案是否定的。
python3.6
fedora
pymysql
很常見的例子,從資料庫從查詢一千條資料,再進行簡單的格式轉換。
#coding=utf-8
import time
from numba import jit
import pymysql
conn = pymysql.connect(
"192.168.10.125"
,"username"
,"password"
,"db_name"
)#@jit #位置1
deftest_for()
: c =conn.cursor(
) c.execute(
"select * from user limit 1000"
) start = time.time(
)for a in c.fetchall():
to_dict(a, c.description)
end = time.time(
)print
("cost_seconds:"
, end-start)
#@jit #位置2
defto_dict
(row, description)
:"""
記錄轉為字典
"""item =
dict()
for i, field in
enumerate
(description)
: field_name = field[0]
item[field_name]
= row[i]
return item
test_for(
)
python3 0.0033788681030273438
python3 +位置1jit 0.08921098709106445
python3 + 位置1jit+位置2jit 3.846426010131836
pypy 0.0065860748291015625
對比結果,發現如果是非計算問題,引入即時編譯,反而導致效能下降。實際python在非計算問題上效能很好。
使用numba的姿勢不正確反而導致效能下降
此生必看的科學實驗-水知道答案
《了凡四訓》詳解之改過之法
印光大師十唸法(胡小林主講第1集)
精神病為什麼治不好
百病之源
template 不正確的使用指標堆疊
假設定義了乙個正確的stacktemplate,乙個簡單的堆。三個容易出錯的範例 stackst 版本1 string po 替換為 char po 旨在使用char指標而不是string物件來接受鍵盤的輸入。這種方法失敗的原因是,char指標僅僅是建立了指標 4位元組大小 沒有非配任何用於儲存輸入...
VarFormat的不正確使用導致記憶體洩漏
varformat的不正確使用導致記憶體洩漏 乙個很弱智的錯誤 如下 variant t var dblvalue cstring sout bstr bstrout sout.allocsysstring varformat var,l 0.0,0,var format nosubstitute,...
VarFormat的不正確使用導致記憶體洩漏
varformat的不正確使用導致記憶體洩漏 乙個很弱智的錯誤 如下 variant t var dblvalue cstring sout bstr bstrout sout.allocsysstring varformat var,l 0.0,0,var format nosubstitute,...