|
目录
- 1、跳过迭代对象的开头
- 2、避免数据复制
- 3、避免变量中心变量
- 4、循环优化
- 5、使用numba.jit
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.jitdef 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提速本领内容请搜索脚本之家以前的文章或继承浏览下面的相关文章希望大家以后多多支持脚本之家!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|