加速你的Python
当你寻找这种问题的时候,很开心,你的代码水平以及对python的各种数据类型的认知会上升一个台阶!
我是什么时候开始思考这种问题的呢?当然是有一天发现模型跑数据的时候,程序一直在运行但却一直不出最终结果,然后发现作者写的代码真的是低效,不得不说,会写模型的人不一定会写代码!
一、加速代码查找
1. 用 set 而非 list 进行查找(初学者的通病)
低效方法:
list_data = [i for i in range(1000000)]1098987 in list_data # 13.4 ms
高效方法:
set_data = set(list_data)1098987 in set_data # 10.3 us
原理很简单:list 是线性查找(即从前向后一个元素一个元素的查找),set 是通过hash查找(通过hash函数直接定位)
2. 用 dict 而非两个 list 进行匹配查找
低效方法:
list_a = [i for i in range(1000000)]
list_b = [i**2 for i in list_a]print(list_b[list_a.index(876567)]) # 7.5 ms
高效方法:
dict_ab = dict(zip(list_a, list_b))print(dict_ab.get(876567, None)) # 141 us
二、加速你的循环
在循环中避免重复计算
低速方法:
a = [i for i in range(2000)]b = [i/sum(a) for i in a] # 32.8 ms
高效方法:
sum_a = sum(a)b = [i/sum_a for i in a] # 266 us
三、使用多进程
可以参考我之前博文 一篇文章学习python多进程
最后最后,其实还有很多加速的方法,不过上述是我目前常用到的方式啦,想了解更多参见24式加速你的Python
加速你的Python相关推荐
- python如何并发运行2个软件_如何利用并发性加速你的python程序(二):I/O 绑定程序加速...
原标题:如何利用并发性加速你的python程序(二):I/O 绑定程序加速 雷锋网 AI 科技评论按,本文是工程师 Jim Anderson 分享的关于「通过并发性加快 python 程序的速度」的文 ...
- 10个简单的hacker加速你在Python中的数据分析
10个简单的hacker技术加速你在Python中的数据分析 来源 技巧和窍门,特别是在编程领域,可以非常有用.有时,一个小黑客既可以节省时间,也可以挽救生命.一个小的快捷方式或附加功能有时会被证明是 ...
- rust门卡有什么用_屠龙之技! 使用Rust加速你的Python
屠龙之技! 使用Rust加速你的Python zhangy233 • 2020 年 09 月 11 日 前言 默认读者已经习得 rust基础相关, 且掌握python基础语法 资料不多, 我也是小试牛 ...
- 如何利用并发性加速你的python程序(二):I/O 绑定程序加速
雷锋网 AI 科技评论按,本文是工程师 Jim Anderson 分享的关于「通过并发性加快 python 程序的速度」的文章的第二部分,主要内容是 I/O 绑定程序加速相关. 在上一篇中,我们已经讲 ...
- 如何利用并发性加速你的python程序(二):I/O 绑定程序加速...
雷锋网 AI 科技评论按,本文是工程师 Jim Anderson 分享的关于「通过并发性加快 python 程序的速度」的文章的第二部分,主要内容是 I/O 绑定程序加速相关. 在上一篇中,我们已经讲 ...
- 24式加速你的Python
作者 | 梁云1991 来源 Python与算法之美 一.分析代码运行时间 第1式,测算代码运行时间 平凡方法 快捷方法(jupyter环境) 第2式,测算代码多次运行平均时间 平凡方法 快捷方法(j ...
- 24招加速你的Python,超级实用!
云哥前期从以下九个方面讨论了加速Python的具体方法,一共24个,每个都带有优化前后的对比,非常实用. 分析代码运行时间 加速查找 加速循环 加速函数 实用标准库加速 Numpy向量化加速 加速Pa ...
- 24 式加速你的 Python
一,分析代码运行时间 第1式,测算代码运行时间 平凡方法 快捷方法(jupyter环境) 第2式,测算代码多次运行平均时间 平凡方法 快捷方法(jupyter环境) 第3式,按调用函数分析代码运行时间 ...
- 使用镜像服务器加速你的Python PyPi
在天朝,最和谐的事情莫过于"连接被重置".这件事情暂时无法解决,真是令人痛心.很多个人时候我们个人可以借助很多工具来绕过,但是假如在开发生产环境中,这也是比较困扰的事情了,比如Py ...
最新文章
- 三角形css_纯 CSS 实现绘制各种三角形(各种角度)
- PHP多选题怎么弄,php多选题评分算法求指导解决方法
- linux shell 里面执行python 程序_Linux下编写脚本Shell和Python的区别?
- Java集合的使用:List与Map
- SpringCloud教程 | 第四篇:断路器(Hystrix)
- python实现对矩阵按照行、列求和,不使用numpy、pandas模块
- stm32怎么入门?数电模电单片机先学哪个?
- 视频流媒体服务器智能云终端如何快速获取直播流地址?
- XMLHttpRequest 的 responseType 属性
- php滑动拼图验证,如何在PHP环境下实现滑动拼图验证
- Python XML文件快速排版
- 微信第三方平台之授权流程(三)
- 【OpenGL 学习笔记】第 7 篇:绘制旋转立方体
- 谷歌财务api的替代[关闭]
- css实现滚动条美化功能
- zabbix4.2批量导入主机
- 流感传染(C++实现)
- cloud探索 - ASW基础知识
- 生态 | 战略签约,人大金仓携手同联公司签署战略协议共同开创信息化创新发展新篇章!...
- vitis qspi_flash的烧写
热门文章
- 软件工程师 VS 硬件工程师
- 两台linux之间互传php脚本,linux下两台服务器实现同步的方法
- Web框架——Flask系列之Flask-SQLAlchemy数据库的基本操作(九)
- 利用bds和dfs解决 LeetCode 107. Binary Tree Level Order Traversal II
- LeetCode 1966. Binary Searchable Numbers in an Unsorted Array
- LeetCode 1668. 最大重复子字符串
- LeetCode 1223. 掷骰子模拟(DP)
- 基于奇异值分解(SVD)的图片压缩实践
- 美国在理论计算机科学的研究重视,清华麻省理工香港中文联建理论计算机科学研究中心...
- python输出50-150之间不能被5整除的整数代码解读