国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

如何讓python的運行速度得到提升

瀏覽:2日期:2022-07-18 10:49:18

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 sec4999999950000000

是不是快了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ù)。

內(nèi)容擴展:

Python運行速度提升

相比較C,C++,python一直被抱怨運行速度很慢,實際上python的執(zhí)行效率并不慢,而是解釋器Cpython運行效率很差。

通過使用numba庫的jit可以讓python的運行速度提高百倍以上。

同諾簡單累加,相乘的例子,可以看出。

#!/usr/bin/env python# encoding: utf-8’’’@author: Victor@Company:華中科技大學電氣學院聚變與等離子研究所@version: V1.0@contact: [email protected] 2018--2020@software: PyCharm2018@file: quickPython3.py@time: 2018/9/21 20:54@desc:使用numba的jit是python代碼運行速度提高100倍左右’’’’’’平常運行’’’import timedef add(x,y): tt = time.time() s = 0 for i in range(x,y):s += i print(’The time used: {} seconds’.format(time.time()-tt)) return s add(1,100000000)##########結(jié)果################ D:Python3python.exe D:/Pycharm2018Works/InsteringPython3/SomeBasics/quickPython3.py# The time used: 6.712835788726807 seconds# Process finished with exit code 0

’’’調(diào)用numba運行’’’import timefrom numba import jit@jitdef add(x,y): tt = time.time() s = 0 for i in range(x,y):s += i print(’The time used: {} seconds’.format(time.time()-tt)) return s add(1,100000000)##########結(jié)果################ D:Python3python.exe D:/Pycharm2018Works/InsteringPython3/SomeBasics/quickPython3.py# The time used: 0.06396007537841797 seconds# # Process finished with exit code 0

Numba模塊能夠?qū)⑻幚鞱umPy數(shù)組的Python函數(shù)JIT編譯為機器碼執(zhí)行,從而上百倍的提高程序的運算速度。

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 精品三级国产一区二区三区四区 | 日本欧美国产精品 | 国产在线综合一区二区三区 | 日韩午夜视频在线观看 | 亚洲精品69| 欧美日本俄罗斯一级毛片 | 在线亚洲黄色 | 91精品国产爱久久久久久 | 国产vs久久 | 国产视频高清在线 | 九九九精品视频 | 国产片毛片| 精品国产区一区二区三区在线观看 | 波多野结衣中文在线播放 | 亚洲精品一 | 精品成人一区二区三区免费视频 | 久久久国产精品福利免费 | 久色视频 | 69精品免费视频 | 婷婷丁香久久 | 美女黄色免费看 | 中文字幕乱 | 国产伦精品一区二区三区精品 | 高清性做爰免费网站 | 韩国精品一区视频在线播放 | 日本国产在线 | 视频一二三区 | 欧美成人免费一区在线播放 | 欧美极品video粗暴 | 一区二区三区网站在线免费线观看 | 国产精品视频第一区二区三区 | 国产深夜福利视频网站在线观看 | 成年女人免费又黄又爽视频 | 精品国产三级在线观看 | 91资源在线播放 | 香港三级网站 | 欧美日韩亚洲在线观看 | 欧美精品1 | 中文成人在线 | 久草综合视频 | 国产成人偷拍 |