麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

一行代碼讓 Python 的運行速度提高100倍

2020-02-15 23:07:27
字體:
供稿:網(wǎng)友

python一直被病垢運行速度太慢,但是實際上python的執(zhí)行效率并不慢,慢的是python用的解釋器Cpython運行效率太差。

“一行代碼讓python的運行速度提高100倍”這絕不是嘩眾取寵的論調(diào)。

我們來看一下這個最簡單的例子,從1一直累加到1億。

最原始的代碼:

import timedef foo(x,y):  tt = time.time()  s = 0  for i in range(x,y):    s += i  print('Time used: {} sec'.format(time.time()-tt))  return sprint(foo(1,100000000))

結(jié)果:

Time used: 6.779874801635742 sec
4999999950000000

我們來加一行代碼,再看看結(jié)果:

from numba import jitimport time@jitdef foo(x,y):  tt = time.time()  s = 0  for i in range(x,y):    s += i  print('Time used: {} sec'.format(time.time()-tt))  return sprint(foo(1,100000000))

結(jié)果:

Time used: 0.04680037498474121 sec
4999999950000000

是不是快了100多倍呢?

那么下面就分享一下“為啥numba庫的jit模塊那么牛掰?”

NumPy的創(chuàng)始人Travis Oliphant在離開Enthought之后,創(chuàng)建了CONTINUUM,致力于將Python大數(shù)據(jù)處理方面的應(yīng)用。最近推出的Numba項目能夠?qū)⑻幚鞱umPy數(shù)組的Python函數(shù)JIT編譯為機器碼執(zhí)行,從而上百倍的提高程序的運算速度。

Numba項目的主頁上有Linux下的詳細安裝步驟。編譯LLVM需要花一些時間。

Windows用戶可以從Unofficial Windows Binaries for Python Extension Packages下載安裝LLVMPy、meta和numba等幾個擴展庫。

下面我們看一個例子:

import numba as nbfrom numba import jit@jit('f8(f8[:])')def sum1d(array): s = 0.0 n = array.shape[0] for i in range(n):  s += array[i] return simport numpy as nparray = np.random.random(10000)%timeit sum1d(array)%timeit np.sum(array)%timeit sum(array)10000 loops, best of 3: 38.9 us per loop10000 loops, best of 3: 32.3 us per loop100 loops, best of 3: 12.4 ms per loop

numba中提供了一些修飾器,它們可以將其修飾的函數(shù)JIT編譯成機器碼函數(shù),并返回一個可在Python中調(diào)用機器碼的包裝對象。為了能將Python函數(shù)編譯成能高速執(zhí)行的機器碼,我們需要告訴JIT編譯器函數(shù)的各個參數(shù)和返回值的類型。我們可以通過多種方式指定類型信息,在上面的例子中,類型信息由一個字符串'f8(f8[:])'指定。其中'f8'表示8個字節(jié)雙精度浮點數(shù),括號前面的'f8'表示返回值類型,括號里的表示參數(shù)類型,'[:]'表示一維數(shù)組。因此整個類型字符串表示sum1d()是一個參數(shù)為雙精度浮點數(shù)的一維數(shù)組,返回值是一個雙精度浮點數(shù)。

需要注意的是,JIT所產(chǎn)生的函數(shù)只能對指定的類型的參數(shù)進行運算:

print sum1d(np.ones(10, dtype=np.int32))print sum1d(np.ones(10, dtype=np.float32))print sum1d(np.ones(10, dtype=np.float64))1.2095376009e-3121.46201599944e+18510.0            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国内精品久久久久久影视8 嫩草影院在线观看网站成人 | 久久亚洲国产精品 | 欧美一区在线观看视频 | 日本精品中文字幕 | 露脸各种姿势啪啪的清纯美女 | 精品国产一区二区三区蜜殿 | 亚洲精品 在线播放 | 毛片韩国 | 成人一区视频 | 久久精品亚洲欧美日韩精品中文字幕 | 欧美77| 99精品国产在热久久婷婷 | 久久精品一区二区三区不卡牛牛 | 久久久一区二区三区精品 | 国产精品成人av片免费看最爱 | 91精品国产777在线观看 | 麻豆视频在线播放 | 国产精品av久久久久久久久久 | 欧美日韩国产一区二区三区在线观看 | 黄色一级片免费在线观看 | 999久久久| 欧洲黄色一级视频 | 色淫湿视频 | 色综合视频网 | 玖草在线资源 | 成人一区二区三区在线 | 污黄视频在线观看 | 亚洲人成综合第一网 | 啪啪毛片| 久久精品视频免费 | 亚洲精品动漫在线观看 | 综合网天天色 | 国产99视频精品免视看9 | 国产精品成人亚洲一区二区 | 91精品国产乱码久久久久久久久 | 美女网站黄在线观看 | 久久久久久久久成人 | 国产99视频精品免视看9 | 午夜国产在线观看 | 精品爱爱| 亚洲网站在线播放 |