社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

24招加速你的Python,超级实用!

小白学视觉 • 2 年前 • 305 次点击  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

云哥前期从以下九个方面讨论了加速Python的具体方法,一共24个,每个都带有优化前后的对比,非常实用。

  1. 分析代码运行时间

  2. 加速查找

  3. 加速循环

  4. 加速函数

  5. 实用标准库加速

  6. Numpy向量化加速

  7. 加速Pandas

  8. Dask加速

  9. 多线程多进程加速


我在此基础上主要美化了编辑,方便读者更容易阅读学习。



一 、分析代码运行时间


1 测算代码单次运行时间


平凡法:



快捷法(Jupyter):



2 测算代码重复执行多次平均用时


平凡法:



快捷法(Jupyter):



3 按调用函数分析代码运行时间


平凡法:



快捷法(Jupyter):



4 按行分析代码运行时间


平凡法:



快捷法(Jupyter):




二、加速你的查找


5 用set而非list进行in查找


低速法:



高速法:



6 用dict而非两个list进行匹配查找


低速法:



高速法:




三、加速你的循环


7 优先使用for循环而不是while循环


低速法:



高速法:



8 循环体中避免重复运算


低速法:



高速法:




四、加速你的函数


9、用缓存机制加速递归函数


低速法:



高速法:



10、用循环取代递归


低速法:



高速法:



11、 使用Numba加速Python函数


低速法:



高速法:




五、使用标准库函数进行加速


12、使用collections.Counter类加速计数


低速法:



高速法:



13、使用collections.ChainMap加速字典合并


低速法:



高速法:




六、使用numpy向量化进行加速


14、使用np.array代替list


低速法:



高速法:



15、使用np.ufunc代替math.func


低速法:



高速法:



16、使用np.where代替if


低速法:



高速法:




七、加速你的Pandas


低速法:



高速法:



18、避免动态改变DataFrame的行数


低速法:



高速法:



19、使用csv文件读写代替xlsx文件读写


低速法:



高速法:



20、使用pandas多进程工具pandarallel


低速法:



高速法:




八、使用Dask进行加速


21、使用dask加速dataframe


低速法:



高速法



22、使用dask.delayed应用多进程加速


低速法:



高速法:




九、应用多线程多进程加速


23、使用多线程提升IO密集任务效率


低速法:



高速法:



24、使用多进程提升CPU密集任务效率


低速法:



高速法:



好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇



下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN 算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/147940
 
305 次点击