Python的运行效率太低?几行代码快速提升

2020-05-08 12:15 阿佐

 点击上方蓝色字关注我们

最简单的代码

最实际的问题

全文字数: 1300

阅读时间:    3 分钟



阿佐今天来为大家带来“引你入门学Python”专题的第6期——如何快

提升Python的运行效率?

介绍两种加速方法:

GPU加速&CPU加速




GPU加速

GPU加速的方法是利用多个GPU提升运行效率,代码如下:

#利用多个GPU加速import osos.environ['CUDA_VISIBLE_DEVICES'] = '2,1,0'

这是存在多个GPU的电脑上可以实现的,只要放在你编写的代码中即可。其中,os库提供通用的、基本的操作系统交互功能,与操作系统相关的,包括常用路径操作、进程管理、环境参数等。所以这里需要import os库来进行加速。



CPU加速
利用jit编译加速CPU。在使用这几行代码前,需要首先定义函数在Python中,常用def进行函数定义,就像Python的内置函数一样,从而自己调用自己的函数实现你所需要的需求。它代码的基本形式如下
def 函数名(参数列表):   函数体
下面举一个小例子:
def example(arg1,arg2):    arg1=1    arg=2   print('你需要运行的代码') 

很多情况下,为实现需求而进行编程,都会转换成数值,然后运行计算,那么可以将你的代码利用 def定义为函数,将参数函数体换成你自己要运行的代码,不管你的计算有多复杂,我曾经尝试进行非常复杂的多重数值积分,一度因为运行太慢,都算了5个小时了,告诉我因为运行内存不足而算不下去,但是加上@jit后就完全不一样了,半个小时左右就算出了结果。让大家感受一下:

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))))

大家可以参照下面这个简单的例子进行加速:

#jit编译from numba import jit@jitdef example(arg1,arg2):    result=arg1+arg2    print('你的代码')   return result

return的就是是你所需要的结果。



RUN运行

最后,只要输入上述函数名,赋予参数

arg1=5arg2=6result=example(arg1,arg2)
点击运行-Run,就能得到你想要的结果。

— END —



作者 阿佐
图片 Mixkit Art

往期回顾

随笔

Twins双胞胎兄弟是什么样子呢?

■【Twins你们相信双胞胎有心灵感应吗?

■【Twins现实中真的存在闪现,你见过吗?

实用

■【Python引你入门学Python(一)——引言

■【Python“耍”Python还要很多“装备”?Anaconda一键搞定

■【Python代码写在哪里?最方便简洁的网页Python编译器

■【Python如何让你的Python代码像学霸笔记一样层次分明?

■【Python学Python就三点!看了就能编!


长|按|二|维|码|

随缘关注,Zelper & Yelper ↑

留言请点击这里

如果觉得不错点个“ 在看”哦~


昵称:
内容:
验证码:
提交评论
评论一下