最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何讓python的運(yùn)行速度得到提升

 更新時間:2020年07月08日 14:19:40   作者:silencement  
在本篇文章里小編給大家分享了關(guān)于如何讓python的運(yùn)行速度得到提升的方法和技巧,需要的朋友們可以學(xué)習(xí)下。

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

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

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

最原始的代碼:

import time
def 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 s
print(foo(1,100000000))

結(jié)果

Time used: 6.779874801635742 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編譯為機(jī)器碼執(zhí)行,從而上百倍的提高程序的運(yùn)算速度。

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

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

下面我們看一個例子:

import numba as nb
from 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 s
import numpy as np
array = np.random.random(10000)
%timeit sum1d(array)
%timeit np.sum(array)
%timeit sum(array)
10000 loops, best of 3: 38.9 us per loop
10000 loops, best of 3: 32.3 us per loop
100 loops, best of 3: 12.4 ms per loop

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

內(nèi)容擴(kuò)展:

Python運(yùn)行速度提升

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

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

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

#!/usr/bin/env python
# encoding: utf-8
'''
@author: Victor
@Company:華中科技大學(xué)電氣學(xué)院聚變與等離子研究所
@version: V1.0
@contact: 1650996069@qq.com 2018--2020
@software: PyCharm2018
@file: quickPython3.py
@time: 2018/9/21 20:54
@desc:使用numba的jit是python代碼運(yùn)行速度提高100倍左右
'''
'''平常運(yùn)行'''
import time
def 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:\Python3\python.exe D:/Pycharm2018Works/InsteringPython3/SomeBasics/quickPython3.py
# The time used: 6.712835788726807 seconds
# Process finished with exit code 0
'''調(diào)用numba運(yùn)行'''
import time
from numba import jit
@jit
def 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:\Python3\python.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編譯為機(jī)器碼執(zhí)行,從而上百倍的提高程序的運(yùn)算速度。

相關(guān)文章

  • Python Numpy數(shù)組擴(kuò)展repeat和tile使用實例解析

    Python Numpy數(shù)組擴(kuò)展repeat和tile使用實例解析

    這篇文章主要介紹了Python Numpy數(shù)組擴(kuò)展repeat和tile使用實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • python基礎(chǔ)教程項目五之虛擬茶話會

    python基礎(chǔ)教程項目五之虛擬茶話會

    這篇文章主要為大家詳細(xì)介紹了python基礎(chǔ)教程項目五之虛擬茶話會,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • django項目中使用手機(jī)號登錄的實例代碼

    django項目中使用手機(jī)號登錄的實例代碼

    這篇文章主要介紹了django項目中使用手機(jī)號登錄的實例代碼,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • 解決PyCharm import torch包失敗的問題

    解決PyCharm import torch包失敗的問題

    今天小編就為大家分享一篇解決PyCharm import torch包失敗的問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 使用python寫一個自動瀏覽文章的腳本實例

    使用python寫一個自動瀏覽文章的腳本實例

    今天小編就為大家分享一篇使用python寫一個自動瀏覽文章的腳本實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • python實現(xiàn)根據(jù)文件格式分類

    python實現(xiàn)根據(jù)文件格式分類

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)根據(jù)文件格式分類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • python編寫函數(shù)注意事項總結(jié)

    python編寫函數(shù)注意事項總結(jié)

    在本篇文章里小編給大家分享了一篇關(guān)于python編寫函數(shù)注意事項總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • Python實現(xiàn)獲取網(wǎng)站或網(wǎng)頁的快照的示例代碼

    Python實現(xiàn)獲取網(wǎng)站或網(wǎng)頁的快照的示例代碼

    本文主要介紹了Python實現(xiàn)獲取網(wǎng)站或網(wǎng)頁的快照的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • Python將MP4視頻轉(zhuǎn)換為GIF圖像的三種方法

    Python將MP4視頻轉(zhuǎn)換為GIF圖像的三種方法

    在數(shù)字時代,將視頻轉(zhuǎn)換為GIF圖像已成為一種流行的內(nèi)容創(chuàng)作方式,在Python中,有多種庫可以幫助你將MP4視頻轉(zhuǎn)換為GIF圖像,本文將介紹三種常用的方法:使用moviepy庫、imageio庫以及結(jié)合opencv和PIL庫,需要的朋友可以參考下
    2024-12-12
  • Python新建項目自動添加介紹和utf-8編碼的方法

    Python新建項目自動添加介紹和utf-8編碼的方法

    這篇文章主要介紹了Python新建項目自動添加介紹和utf-8編碼的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論

辉县市| 玛纳斯县| 玉树县| 胶南市| 九江县| 剑川县| 永年县| 张北县| 民权县| 珠海市| 额尔古纳市| 紫金县| 仙居县| 永仁县| 中宁县| 荥经县| 宝鸡市| 班戈县| 司法| 逊克县| 康平县| 两当县| 藁城市| 大名县| 左云县| 石泉县| 科技| 江川县| 枣强县| 黄平县| 肇东市| 义马市| 咸阳市| 绥德县| 雅安市| 大邑县| 吴忠市| 宁蒗| 江川县| 西盟| 房产|