Python应用程序调优
最近在做一些深度学习、关联规则挖掘相关的算法,其中运行时间和占用内存是算法好坏的评价标准之二,在算法实现过程中踩了一些坑,也误打误撞找到了一些解决办法,将其发布于本博客,本博客将持续更新!!!
1 时间调优
1.1 不要在程序内部频繁使用垃圾回收函数 gc.collect(),这将使程序的运行时间慢100倍
# 示例程序 start = time.time() lines = ['X1','X2','X3','X4','X5','X6','X7'] line = ['X3','X5','X7'] for ln in lines: if ln in line: ln = ln del lines, line gc.collect() end = time.time() print("使用垃圾回收: %sS"%(end-start))

1.2 判断一个列表是否在另一个列表中时直接用循环代替issubset()
# 示例程序 start = time.time() lines = ['X1','X2','X3','X4','X5','X6','X7'] line = ['X3','X5','X7'] flag = True for ln in line: if ln not in lines: flag = False break if flag: print('Find') end = time.time() print("循环判断时: %sS"%(end-start))
start = time.time() lines = ['X1','X2','X3','X4','X5','X6','X7'] line = ['X3','X5','X7'] if set(line).issubset(set(lines)): print('Find') end = time.time() print("使用issubset()判断时: %sS"%(end-start))

1.3 采用itertools函数生成全排列时使用combinations()不要使用product(),后者比前者慢100倍
# 示例程序 line = ['X10', 'X9', 'X2', 'X6', 'X4', 'X5'] count = len(line) lines = [] s = time.time() for i in range(2,count): lines.append(list(combinations(line, i))) e = time.time() print('Combinations:{:f}'.format(e-s)) s = time.time() for i in range(2,count): lines.append(list(product(line, repeat=i))) e = time.time() print('Product:{:f}'.format(e-s))

未完待续......
2. 内存调优
未完待续......
阅读剩余
版权声明:
作者:姜九二
链接:https://www.jiangjianwu.cn/development/coding/python/492/python%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e8%b0%83%e4%bc%98.html
文章版权归作者所有,未经允许请勿转载。
THE END