1.软文推荐

2.软文推荐

3.软文推荐

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

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

# 真是模块内全局变量
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

本文来源:www.lxlinux.net/9603.html,若引用不当,请联系修改。

相关文章 8

1

详解Iptables 1分钟前

netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的...

2

广东茂名vps高防虚拟主机(广州vps主机) 3分钟前

目录:1、游戏服务器租用哪里好?2、高防云主机跟VPS有什么区别?3、VPS、虚拟机、云主机,这三个到底有什么区别?4、VPS主机与虚拟主机...

3

CentOS 7安装Splunk 6分钟前

Splunk是探索和搜索数据的最有力工具,从收集和分析应用程序、Web服务器、数据库和服务器平台的实时可视化海量数据流,分析出IT企业产生...

4

阿里云cdn加速怎么收费(阿里云cdn怎么免费使用) 8分钟前

目录:1、cdn加速多少钱2、关于cdn怎么收费的阿里云帮助中心问题解答3、CDN一般怎么收费cdn加速多少钱 cdn加速价格没有统一的价格,加速质...

5

详解Java异步调用 10分钟前

在长期的Java客户端开发中,最常见的一个客户端调用模式就是Java的异步调用。所谓异步调用其实就是实现一个可无需等待被调用函数的返回...

6

容器安全需要考虑的一些方面 13分钟前

容器是在新环境(例如测试环境)中运行软件的一种流行的解决方案。它包含整个运行环境,其中包括应用程序、所有依赖项、配置文件和库。...

7

1核2G云主机(云服务器1核2g性能怎么样) 14分钟前

目录:1、华为云1核2g能干嘛2、腾讯云1核2g相当于什么电脑?3、阿里云服务器1核2G,2核4G,4核8G,8核16配置可选ECS实例规格汇总华为云1核2g能干...

8

详解Linux系统进程共享内存 17分钟前

共享内存就是允许两个或多个进程共享一定的存储区。就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改...