设为首页收藏本站

安徽论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 24194|回复: 0

分享5个python提速技巧,速度瞬间提上来了

[复制链接]

63

主题

789

回帖

1382

积分

金牌会员

Rank: 6Rank: 6

积分
1382
发表于 2022-3-26 11:04:28 | 显示全部楼层 |阅读模式
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
目录


1、跳过迭代对象的开头
  1. string_from_file = """  
  2. // Wooden: ...  
  3. // LaoLi: ...  
  4. //  
  5. // Whole: ...  
  6. Wooden LaoLi... 
  7.  """ 
  8. import itertools  
  9. for line in itertools.dropwhile(lambda line: line.startswith("//"), string_from_file.split(" ")):
  10.     print(line) 
复制代码
2、避免数据复制
  1. # 不推荐写法,代码耗时:6.5秒
  2. def main():
  3.     size = 10000
  4.     for _ in range(size):
  5.         value = range(size)
  6.         value_list = [x for x in value]
  7.         square_list = [x * x for x in value_list]
  8.  
  9. main()
复制代码
  1. # 推荐写法,代码耗时:4.8秒
  2. def main():
  3.     size = 10000
  4.     for _ in range(size):
  5.         value = range(size)
  6.         square_list = [x * x for x in value]  # 避免无意义的复制
复制代码
3、避免变量中间变量
  1. # 不推荐写法,代码耗时:0.07秒
  2. def main():
  3.     size = 1000000
  4.     for _ in range(size):
  5.         a = 3
  6.         b = 5
  7.         temp = a
  8.         a = b
  9.         b = temp
  10.  
  11. main()
复制代码
  1. # 推荐写法,代码耗时:0.06秒
  2. def main():
  3.     size = 1000000
  4.     for _ in range(size):
  5.         a = 3
  6.         b = 5
  7.         a, b = b, a  # 不借助中间变量
  8.  
  9. main()
复制代码
4、循环优化
  1. # 不推荐写法。代码耗时:6.7秒
  2. def computeSum(size: int) -> int:
  3.     sum_ = 0
  4.     i = 0
  5.     while i < size:
  6.         sum_ += i
  7.         i += 1
  8.     return sum_
  9.  
  10. def main():
  11.     size = 10000
  12.     for _ in range(size):
  13.         sum_ = computeSum(size)
  14.  
  15. main()
复制代码
  1. # 推荐写法。代码耗时:4.3秒
  2. def computeSum(size: int) -> int:
  3.     sum_ = 0
  4.     for i in range(size):  # for 循环代替 while 循环
  5.         sum_ += i
  6.     return sum_
  7.  
  8. def main():
  9.     size = 10000
  10.     for _ in range(size):
  11.         sum_ = computeSum(size)
  12.  
  13. main()
复制代码
隐式for循环代替显式for循环
  1. # 推荐写法。代码耗时:1.7秒
  2. def computeSum(size: int) -> int:
  3.     return sum(range(size))  # 隐式 for 循环代替显式 for 循环
  4.  
  5. def main():
  6.     size = 10000
  7.     for _ in range(size):
  8.         sum = computeSum(size)
  9.  
  10. main()
复制代码
5、使用numba.jit
  1. # 推荐写法。代码耗时:0.62秒
  2. # numba可以将 Python 函数 JIT 编译为机器码执行,大大提高代码运行速度。
  3. import numba
  4.  
  5. @numba.jit
  6. def computeSum(size: float) -> int:
  7.     sum = 0
  8.     for i in range(size):
  9.         sum += i
  10.     return sum
  11.  
  12. def main():
  13.     size = 10000
  14.     for _ in range(size):
  15.         sum = computeSum(size)
  16.  
  17. main()
复制代码
到此这篇关于分享5个python提速技巧,速度瞬间提上来了的文章就介绍到这了,更多相关python提速技巧内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
                                                        
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表