社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

5个代码技巧,加速你的Python!

Python编程 • 9 月前 • 215 次点击  
来自公众号:快学Python

Python作为一种功能强大的编程语言,因其简单易学而受到很多初学者的青睐。它的应用领域又非常广泛:科学计算、游戏开发、爬虫、人工智能、自动化办公、Web应用开发等等。

而在数据科学领域中,Python 是使用最广泛的编程语言,并且其受欢迎程度持续增长。如果也经常需要用Python处理海量数据,就一定会遇到代码运行几十分钟甚至更久的情况。今天我们会给大家分享7个代码技巧,加速你的Python运行速度,提高Python技能!

技巧 1:加速 NumPy

NumPy是一个可高效处理数组的 Python 库,它还提供快速和优化的矢量化操作。但!它不支持并行处理。作为 NumPy 的替代品,我们可以使用NumExpr。NumExpr 的性能明显优于 NumPy,因为它支持多线程。此外,它避免了为中间结果分配内存。

pip install numexpr

在交互式环境中输入如下命令:

import numpy as np
import numexpr as ne
import timeit

var1 = np.random.random(2**27)
var2 = np.random.random(2**27)

%timeit np.sin(var1) / np.cos(var2)
%timeit ne.evaluate("sin(var1) / cos(var2)")

输出:

根据执行结果,使用 NumExpr 大约快 4 倍。当你有大型数组需要处理时,NumExpr 效果最佳。

技巧 2:优先使用内置函数

Python 内置函数比自定义实现快得多,因此我们要优先使用它们。

举个例子:

在上面的代码中,我们将一个包含四个条目的列表复制了 1000 万次,因此我们得到了一个包含 4000 万个条目的列表,然后我们将列表中的字符串转换为小写。

可以看到结果,使用内置函数的速度提高了大约 23倍。

关于内置函数的使用,可以参考我们之前分享的文章:

Python中堪称神仙的6个内置函数

Python中最常用的10个内置函数

技巧 3:使用列表生成式

经常使用列表和for循环来存储计算结果,其实使用列表生成式能更快。

在交互式环境中输入如下命令:




    
import numpy as np
from time import perf_counter

result_list_loop = []
result_list_com = []

number_round = 10000000

start = perf_counter()
for i in range(number_round):
    result_list_loop.append(i*i)
print(perf_counter()-start)

start = perf_counter()
result_list_com = [i*i for i in range(number_round)]
print(perf_counter()-start)

print(result_list_com[10])

输出:

如上图所示,使用列表生成式能快3倍。

列表生成式是一种基于其他iterable(如集合、元组、其他列表等)创建列表的方法,大家感兴趣可以自行了解一下。

技巧 4:不要导入不必要的模块

估计大家可能已经多次听到这个技巧,但它可以显着提高代码的性能。有时候没有必要导入整个库,毕竟我们通常只需要它的某些功能。

这里我们使用math模块作为例子:

import math
from time import perf_counter

start = perf_counter()
variable = math.exp(7)
print(perf_counter()-start)

接着我们不导入整个math模块,只使用需要的 exp() 函数。

from math import exp
from time import perf_counter

start = perf_counter()
variable = exp(7)
print(perf_counter()-start)

两次运行时间比较:

技巧 5:使用numba

Numba 是一款为 python 打造的、专门针对 Numpy 数组循环计算场景的即时编译器。

在交互式环境中输入如下命令:

df = pd.DataFrame({'x':np.random.rand(10000)})
                    
def calculate(x):
    return np.sum(x)/x.size

输出分别Numba和低级语言CPython进行加速:

结果可以看到,我们的自定义函数在使用engine='numba' 或 engine='cython' 后,速度明显加快!

今天我们给大家分享了7个代码技巧,加速你的Python运行速度,提高Python技能!看到文末的同学,麻烦给右下角点个赞再走吧~另外我的书还有4折优惠名额,可点击阅读原文支持一下!

---END---

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/160265
 
215 次点击