【原创】Python 之快速性能优化(第二部分)

简介:
本文为翻译,原文地址:《   Quick Python Performance Optimization: Part II    

This is the Part II of Quick Python Performance Optimizations.  
本文是 Python 性能优化二两发的第二部分。  

11. Use MapReduce and Filter instead of for loop where ever possible.  
11. 尽可能使用 Map,Reduce 和 Filter 替代 for 循环。  

12. for checking 'a in b', dict or set is better than list/tuple.  
12. 针对 'a in b' 的测试,b 是字典或者集合要好于是列表/元组的情况。  

13. while working with big amount of data, if possible use immutable datatypes, they are faster - tuples > list  
13. 当针对大块数据进行操作时,在可能的情况下,使用不可变数据类型更好,因为它们会更快相应操作 - 元组 > 列表。  

14. insertion into a list in O(n) complexity.  
14. 向列表插入数据是 O(n) 复杂度的操作。  

15. if you need manipulations on both ends of a list, use deque.  
15. 如果你需要对列表的头和尾都进行操作,请使用 deque 。  

16. del - delete the objects after use -  
  • Python does it by itself. But make sure of that with the gc module or 
  • by writing an __del__ magic function or 
  • the simplest way, del after use.
16. del - 在对象使用结束后进行删除 -   
  • Python 自己会进行该操作。但是请确认 gc 模块处于正常工作状态,或
  • 自己写一个 __del__ magic 函数,或
  • 最简单的方式,自己在用后自己删除。
17. time.clock()  
17. 使用 time.clock() 。  

18. GIL(http://wiki.python.org/moin/GlobalInterpreterLock) - GIL is a demon.   
GIL allows only one python native thread to be run per process, preventing CPU level parallelism. Try using ctypes and native C libararies to overcome this. When even you reach the end of optimizing with python, always there exist an option of rewriting terribly slow functions in native C, and using it through python C bindings. Other libraries like gevent is also attacking the problem, and is successful to some extend.    
18. GIL - GIL 是一个恶魔      
GIL 只允许在每个进程里运行一个 python 本地线程,阻止了 CPU 级别的并发。可以使用 ctypes 和纯 C 库来解决这个问题。就算到了优化 python 代码的最后阶段,仍旧可以通过使用纯 C 重写慢速 python 函数来进行优化。或者干脆直接使用 python 的 C 绑定。其他的库,如 gevent,同样也针对此问题进行了优化,从某种角度上来说还是不错的。  

TL,DR: While you write code, just give one round of thought on the data structures, the iteration constructs, builtins and create C extensions for tricking the GIL if need.  
TL,DR: 当你写代码的时候,可以在数据结构、迭代的构建、内置函数上多进行一些考量 ,并在必要时,创建一些 C 扩展来克服 GIL 带来的问题。  

目录
相关文章
|
5月前
|
算法 测试技术 开发者
性能优化与代码审查:提升Python开发效率
【4月更文挑战第9天】本文强调了Python开发中性能优化和代码审查的重要性。性能优化包括选择合适数据结构、使用生成器和避免全局变量,而代码审查涉及遵循编码规范、使用静态代码分析工具和编写单元测试。这些实践能提升代码效率和可维护性,促进团队协作。
65 0
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【8月更文挑战第5天】性能测试确保应用高负载下稳定运行。Apache JMeter与Locust是两大利器,助力识别解决性能瓶颈。本文介绍这两款工具的应用与优化技巧,并通过实战示例展示性能测试流程。首先,通过JMeter测试静态与动态资源;接着,利用Locust的Python脚本模拟HTTP请求。文中提供安装指南、命令行运行示例与性能优化建议,帮助读者掌握性能测试核心技能。
94 0
|
4月前
|
缓存 监控 前端开发
python开发中的技术选型与性能优化
在Python项目(一个基于Django和React的电商平台)开发中,面临技术选型、性能优化、架构设计和成本节约等问题。选用Django后端框架和React前端,利用Redux管理状态。为优化性能,进行了数据库索引优化、使用Redis缓存、异步处理(Celery)。采用微服务、RESTful API和代码复用提升架构灵活性。通过开源软件、云服务和注重代码质量降低成本。同时,借助日志记录、版本控制和监控工具有效排查故障。最终实现了一个稳定、高效且可扩展的平台。
49 1
|
5月前
|
存储 缓存 算法
Python中常用数据结构与算法的性能优化探讨
Python中常用数据结构与算法的性能优化探讨
60 3
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
47 5
|
2月前
|
算法 数据挖掘 大数据
深入学习Python的性能优化
【8月更文挑战第9天】深入学习Python性能优化涵盖设定明确目标、运用timeit与cProfile等工具诊断瓶颈、优化代码结构与算法、采用并行/并发技术、利用生成器与第三方库等策略。这是一个持续学习的过程,旨在全面提升代码效率与响应速度。
31 1
|
2月前
|
机器学习/深度学习 分布式计算 并行计算
性能优化视角:Python与R在大数据与高性能机器学习中的选择
【8月更文第6天】随着数据量的激增,传统的单机计算已经难以满足处理大规模数据集的需求。Python和R作为流行的数据科学语言,各自拥有独特的特性和生态系统来应对大数据和高性能计算的挑战。本文将从性能优化的角度出发,探讨这两种语言在处理大数据集和高性能计算时的不同表现,并提供具体的代码示例。
60 3
|
2月前
|
存储 并行计算 测试技术
NumPy 性能优化:提升 Python 数值计算的速度
【8月更文第30天】Python 是一种广泛使用的编程语言,在科学计算领域尤其受欢迎。然而,由于 Python 的动态类型和解释执行机制,其在处理大规模数值数据时可能会显得相对较慢。为了克服这一限制,NumPy(Numerical Python)库提供了高性能的多维数组对象以及一系列用于操作这些数组的函数。本文将探讨如何利用 NumPy 来提高 Python 中数值运算的效率。
102 0
|
2月前
|
安全 开发者 Python
Python并发编程实践与性能优化
本文探讨了Python中并发编程的重要性及其实践方法,特别是在提升程序性能方面的应用。通过介绍多线程、多进程以及异步编程的基本概念和实现技巧,读者能够了解如何利用Python强大的并发特性来优化程序效率和响应速度。
|
3月前
|
存储 缓存 算法
Python中如何进行性能优化?
【7月更文挑战第16天】Python中如何进行性能优化?
32 2
下一篇
无影云桌面