很实用的Python运行提速方法

本文介绍了三种提升Python代码执行效率的方法:1) 直接导入所需函数而非整个模块,减少方法访问;2) 使用局部变量提高查找效率;3) 避免不必要的属性包装,如无意义的@property。通过这些简单的优化,可以显著提高Python代码的运行速度。
摘要由CSDN通过智能技术生成
今天总结三个提升Python运行速度的方法,只从代码本身考虑,提升运行速度并不会从编写C 扩展的代码、基于JIT的编译器技术考虑。

今天总结三个提升Python运行速度的方法,只从代码本身考虑,提升运行速度并不会从编写C 扩展的代码、基于JIT的编译器技术考虑。

很实用的Python运行提速方法很实用的Python运行提速方法


关于代码执行效率的第一个方法是减少频繁的方法访问,尤其是在多层循环内层、且循环次数较多的操作,差距尤为明显。

# 真是模块内全局变量 
import math 
 
def compute_sqrt(nums): 
    result = [] 
    for n in nums: # 假如nums长度很大 
    # 1. math.sqrt 会被频繁访问 
    # 2. result.append 也会被频繁访问 
        result.append(math.sqrt(n)) 
    return result 

看到在for循环里面,涉及2个频繁的访问:
math.sqrt 会被频繁访问
result.append 也会被频繁访问
因此第一步做如下更改:直接导入sqrt,而不是导入整个模块后再去引用sqrt

# 直接导入sqrt,而不是导入整个模块后再去引用sqrt 
from math import sqrt 
 
def compute_sqrt(nums): 
    result = [] 
    for n in nums: # 假如nums长度很大 
    # 1. math.sqrt 会被频繁访问 
    # 2. result.append 也会被频繁访问 
        result.append(sqrt(n)) 
    return result 

然后再修改result.append,不用频繁访问append,使用标签apd指向它就行了:

# 直接导入sqrt,而不是导入整个模块后再去引用sqrt 
from math import sqrt 
     
def compute_sqrt(nums): 
    result = [] 
    apd = result.append 
    for n in nums: # 假如nums长度很大 
    # 1. math.sqrt 会被频繁访问 
    # 2. result.append 也会被频繁访问 
        apd(sqrt(n)) 
    return result 

第二个方法:查找局部变量的效率是最高的!!!对于频繁访问的变量应尽可能是局部变量,消除不必要的全局变量访问。所以对于上面代码,sqrt还是模块级别的全局变量,所以修改为:

def compute_sqrt(nums): 
    # 调整sqrt为局部变量 
    from math import sqrt 
    result = [] 
    apd = result.append 
    for n in nums: # 假如nums长度很大 
    # 1. math.sqrt 会被频繁访问 
    # 2. result.append 也会被频繁访问 
        apd(sqrt(n)) 
    return result 

第三个方法:不要做一些不必要的属性包装。比如@property必要时再用,能不用时就别用。如下对于属性y做@property装饰没有任何意义!只有在y有特定取值,比如只能取大于0的非负实数时再用此装饰才有意义。

class A: 
    def __init__(self, x, y): 
        self.x = x 
        self.y = y 
    @property 
    def y(self): 
        return self._y 
    @y.setter  
    def y(self, value): 
        self._y = value 

因此修改为下面这样,删去多余的@property包装

class A: 
    def __init__(self, x, y): 
        self.x = x 
        self.y = y 

以上就是Python代码提速的3条基本但却容易被忽略的有价值方法,希望对你有用。

本文地址:很实用的Python运行提速方法 | 《Linux就该这么学》

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于提速 Python 中的 for 循环,有一些方法可以尝试: 1. 使用列表解析(List Comprehension):列表解析是一种简洁的方式来创建新的列表,可以替代传统的 for 循环。它通常比传统的 for 循环更快。例如,将一个列表中的每个元素乘以2,可以使用列表解析来实现:`new_list = [x * 2 for x in old_list]`。 2. 使用内置的函数和方法Python 提供了很多内置的函数和方法,它们通常会比手动编写的循环更快。例如,如果要对一个列表中的元素进行求和,可以使用内置函数 `sum()`,而不是使用循环。 3. 使用并行计算(Parallel Computing):如果你处理的数据量很大,可以考虑使用并行计算来加速循环。Python 中有一些库可以帮助你实现并行计算,如 `multiprocessing` 和 `concurrent.futures`。 4. 使用适当的数据结构:有时候,使用适当的数据结构可以提高循环的效率。例如,如果需要频繁地在一个大型数据集中查找元素,使用集合(set)而不是列表(list)可能会更快。 5. 使用 JIT 编译器:JIT(Just-In-Time)编译器可以将 Python 代码实时地转换为机器码,从而提高执行速度。可以使用诸如 Numba 或 PyPy 等库来实现 JIT 编译。 请注意,以上方法适用于不同的情况,具体的提速效果与具体的代码和问题有关。对于大规模数据处理或者复杂的算法,可能需要更深入的优化策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值