numba加速python学习与尝试
学习:人工智能-机器学习-深度学习概念的区别

使用numba的姿势不正确反而导致性能下降

妙音 posted @ 2019年1月20日 09:24 in 人工智能 with tags python 性能 , 1741 阅读
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
def test_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
def to_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在非计算问题上性能很好。
 
 

来源

 

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter