日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

永恒python地速_立竿见影地把你的 Python 代码提速7倍

發布時間:2023/11/29 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 永恒python地速_立竿见影地把你的 Python 代码提速7倍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前曾經測試計算斐波那契數列的幾種方法,其中基于遞歸的方法是速度最慢的,例如計算第 40 項的值,需要 36 秒。如下圖所示。

要提高運算速度,根本辦法當然是改進算法。不過算法的提高是一個長期積累加上靈機一動的過程。我們今天要講的,是一個不費腦筋,立竿見影的方法——把 Python 代碼編譯成 C 語言代碼。通過 C 語言的運行效率來加速計算過程。

這個過程看起來很復雜,但實際上你并不需要編寫一行 C 語言代碼。你需要做的只是使用一個叫做 Cython 的庫把 Python 代碼編譯為 C 語言代碼即可。

首先我們來安裝 Cython,就像安裝普通的第三方庫一樣:

python3?-m?pip?install?cython

安裝完成以后,我們單獨寫計算斐波那契數列的函數:

def fib(n):

if n in [1, 2]:

return 1

return fib(n - 1) + fib(n - 2)

非常簡單的遞歸寫法。然后關鍵來了,我們要把這個文件保存為fast_fib.pyx。注意后綴是.pyx。如下圖所示:

然后我們創建一個setup.py文件,文件內容如下:

from setuptools import setup

from Cython.Build import cythonize

setup(ext_modules=cythonize('fast_fib.pyx'))

如下圖所示:

這個文件的作用,就是調用 Cython 的cythonize函數把 Python 代碼轉換為 C 代碼。

接下來,開始編譯代碼,執行如下命令:

python3?setup.py?build_ext?--inplace

我的 Python 是 Python3.7,所以運行完成以后,會生成一個fast_fib.cpython-37m-darwin.so,如果你的 Python 是3.8,這個文件名可能是fast_fib.cpython-38m-darwin.so。這個文件你可以改名字,例如改成fast_fib.so。

還有一個文件叫做fast_fib.c。不過你不用打開這個文件,因為它有3200多行。并且你甚至可以直接把它刪掉。真正有用的只有這個fast_fib.cpython-38m-darwin.so文件。

你需要做的,僅僅是直接調用你的函數。我們另外創建一個文件test_fast_fib.py,內容如下:

import time

from fast_fib import fib

start = time.time()

result = fib(40)

end = time.time()

print(f'斐波拉契數列第40項為:{result},耗時:{end - start}秒')

運行效果如下圖所示:

計算斐波那契數列第40項只需要5秒鐘,速度妥妥變成 Python 版本的7倍。

使用 Cython,不僅可以提高程序的運行速度,還可以把你的核心代碼轉換為.so文件,防止別人反編譯看到你的代碼。

關于 Cython 的更多介紹,請閱讀它的官方文檔[1]

有同學可能會問,當前文件夾下面既然有fast_fib.pyx文件,為什么當我們執行from fast_fib import fib的時候,不會從這個文件里面導入 Python 版本的代碼?

這是因為,import只會從后綴為.py/.pyc/.pyo/.so的文件中導入模塊,不會進入.pyx文件中尋找。

參考資料

[1]

官方文檔:?https://cython.readthedocs.io/

本文由 進擊的Coder 發布在 ITPUB,轉載此文請保持文章完整性,并請附上文章來源(ITPUB)及本頁鏈接。

原文鏈接:http://www.itpub.net/2020/04/17/5877/

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的永恒python地速_立竿见影地把你的 Python 代码提速7倍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。