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