• 售前

  • 售后

热门帖子
入门百科

分享5个python提速本领,速度瞬间提上来了

[复制链接]
湘军 显示全部楼层 发表于 2022-1-8 02:28:09 |阅读模式 打印 上一主题 下一主题
目次


  • 1、跳过迭代对象的开头
  • 2、避免数据复制
  • 3、避免变量中间变量
  • 4、循环优化
  • 5、利用numba.jit

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提速本事内容请搜刮草根技术分享从前的文章或继承欣赏下面的相关文章盼望各人以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作