Python的運行效率太低?幾行代碼快速提升!

1、GPU加速

利用多個GPU提升運行效率

#利用多個GPU加速

<code>import os
os.environ['CUDA_VISIBLE_DEVICES'] = '2,1,0'/<code>

這是存在多個GPU的電腦上可以實現的,只要放在你編寫的代碼中即可。

其中,

os庫提供通用的,基本的操作系統交互功能,與操作系統相關的,包括常用路徑操作,進程管理,環境參數等

所以這裡需要import os庫來進行加速

Python的運行效率太低?幾行代碼快速提升!

2、CPU加速

利用jit編譯加速 cpu。在使用這幾行代碼前,需要首先定義函數

2.1、定義函數

在Python中,常用def

def 函數名(參數列表):

函數體

來定義函數,就像Python的內置函數一樣,從而自己調用自己的函數實現你所需要的需求。

下面是一個小例子

<code>def example(arg1,arg2):
arg1=1
arg=2
print('你需要運行的代碼') /<code>

2.2、jit加速

很多情況下,為實現需求而進行編程,都會轉換成數值,然後運行計算,那麼可以將你的代碼利用 def定義為函數,將參數和函數替換成你自己要運行的代碼,不管你的計算有多複雜,筆者曾經嘗試進行非常複雜的多重數值積分,讓大家感受一下:

<code>np.exp(cta_0+cta_1*np.log(x_1)+cta_2*np.log(x_2)+cta_3*np.log(x_3)+cta_4*np.log(x_4)+cta_5*np.log(x_5)+cta_6*np.log(x_6))/(1+np.exp(cta_0+cta_1*np.log(x_1)+cta_2*np.log(x_2)+cta_3*np.log(x_3)+cta_4*np.log(x_4)+cta_5*np.log(x_5)+cta_6*np.log(x_6))))*((1/(5620000*np.sqrt(2*3.1415926535898)))*np.exp(-(((x_2-36050000)/5620000)**2)/2))*((1/(0.01*np.sqrt(2*3.1415926535898)))*np.exp(-(((x_3-0.04)/0.01)**2)/2))*((1/(0.07419776239466247091*x_4*np.sqrt(2*3.1415926535898)))*np.exp(-((np.log(x_4)-19.9345857246606)**2)/(2*(0.07419776239466247091**2))))*((1/(0.2614264718127*x_5*np.sqrt(2*3.1415926535898)))*np.exp(-((np.log(x_5)+3.09177957735430)**2)/(2*(0.2614264718127**2))))*((1/(0.100526743073751*x_6*np.sqrt(2*3.1415926535898)))*np.exp(-((np.log(x_6)+3.67021574053313)**2)/(2*(0.100526743073751**2))))/<code>

一度因為運行太慢,都算了5個小時了,告訴我因為運行內存不足而算不下去,但是加上@jit後就完全不一樣了,半個小時左右就算出了結果。

大家可以參照下面這個簡單的例子進行加速:

<code>#jit編譯
from numba import jit
@jit
def example(arg1,arg2):
result=arg1+arg2
print('你的代碼')
return result
/<code>

return的就是是你所需要的結果

2.3、運行

這一步就是最後一步了,只要像下面一樣輸入上述函數名,賦予參數值,點擊運行Run,就能得到你想要的結果

<code>arg1=5
arg2=6
result=example(arg1,arg2)/<code>
<code>原文鏈接:https://blog.csdn.net/weixin_45288557/java/article/details/105903858
/<code>

最後

如果你處於想學Python或者正在學習Python,Python的教程不少了吧,但是是最新的嗎?說不定你學了可能是兩年前人家就學過的內容,在這小編分享一波2020最新的Python教程。獲取方式,私信小編 “ 資料 ”,即可免費獲取哦!


分享到:


相關文章: