`
desert3
  • 浏览: 2159361 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

python gc回收和性能优化

阅读更多

psyco

脚本的执行效率多少有点差强人意,虽然优化起来并不是难事,但如果有简单的方法,近乎不用修改源代码,那当然值得去关注一下。 psyco 的神奇在于它只需要在代码的入口处调用短短两行代码,性能就能提升 40% 或更多,真可谓是立竿见影!

如果你的客户觉得你的程序有点慢,敬请不要急着去优化代码, psyco 或许能让他立即改变看法。 psyco 堪称 Python jit ,有许多潜力可以挖掘,如果剩下来给你优化性能的时间已经不多,请马上去阅读它的手册,有许多招儿轻松优化性能。

 

prifiler:

python -m profile prof1.py

profile.run("foo()")

      4 function calls in 0.004 CPU seconds

Ordered by: standard name

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     1    0.003    0.003    0.003    0.003 :0(setprofile)
     1    0.001    0.001    0.001    0.001 <stdin>:1(say)
     1    0.000    0.000    0.001    0.001 <string>:1(<module>)
     0    0.000             0.000          profile:0(profiler)
     1    0.000    0.000    0.004    0.004 profile:0(say())

ncalls函数的被调用次数
tottime函数总计运行时间,除去函数中调用的函数运行时间
percall函数运行一次的平均时间,等于tottime/ncalls
cumtime函数总计运行时间,含调用的函数运行时间
percall函数运行一次的平均时间,等于cumtime/ncalls
filename:lineno(function)函数所在的文件名,函数的行号,函数名

 

#带参数

profile.run("collectZol(searchTypes)")

 

timeit:

t = timeit.Timer("t = foo()\nprint t")

t.timeit()

 

及时跳出作用域来使得gc回收内存(注意避免递归调用时内存释放不了的问题)

 

#输出现存的对象数量

def outputGcInfo():
    gc.collect()
    print len(gc.get_objects())

 

把变量赋值为None来回收对象

>>> gc.collect();len(gc.get_objects())
0
3108
>>> x = ["1121"]
>>> gc.collect();len(gc.get_objects())
0
3109
>>> x = None
>>> gc.collect();len(gc.get_objects())
0
3108

分享到:
评论

相关推荐

    Python垃圾回收机制

    Python提供了`gc`模块来控制垃圾回收,如`gc.collect()`可以强制执行垃圾回收,`gc.isenabled()`可以检查垃圾回收是否启用,以及`gc.set_threshold()`可以调整触发垃圾回收的阈值。 在实际编程中,理解Python的垃圾...

    python垃圾回收机制(GC)原理解析

    Python的垃圾回收机制(GC)是其内存管理的关键组成部分,它自动处理不再使用的对象,以防止内存泄漏。本文将深入探讨Python的垃圾回收机制,包括引用计数、标记清除以及分代回收这三种主要方法。 首先,**引用计数...

    Python库 | gc-overrides-0.1.0.tar.gz

    3. **性能优化**:在某些高性能或低延迟的应用中,垃圾收集的开销可能会成为一个问题。gc-overrides库可能提供了优化手段,帮助减少不必要的垃圾收集操作,提高程序运行效率。 4. **调试工具**:gc-overrides可能...

    python官方3.7.1版本exe安装包

    1. **版本升级**:Python 3.7.1是对3.7.0版本的小幅更新,通常包含错误修复、性能优化和一些未在主版本中包含的改进。 2. **类型注解**:Python 3.7开始正式支持类型注解,这使得代码更易读、更易于理解,也有助于...

    24GC实例:Python和Go的内存管理机制是怎样的?1

    Python 的内存管理机制主要由两部分组成:...Python 更侧重于引用计数和周期性垃圾回收,而Go则通过静态类型和更复杂的垃圾回收算法来优化内存性能。理解这两种语言的内存管理机制,有助于编写出更高效、更健壮的代码。

    gc.tar.gz_garbage_garbage collection_回收站_垃圾回收

    5. **性能优化**:GC的性能直接影响到程序的整体性能。因此,如何平衡内存利用率、响应速度和CPU使用率是GC设计的关键。 在"gc6.3"这个文件名中,"6.3"可能是版本号,表明这是一个经过多次改进和优化的垃圾回收实现...

    python3.6.5.tar.gz

    5. **C扩展模块**:在`Modules`目录下,有些Python模块是用C语言编写的,比如`_socket`和`_ssl`,它们提供了与操作系统底层交互的能力,提高了性能。 6. **Python虚拟机(PVM)**:Python的虚拟机实现位于`Python/...

    python3.7 官方中文手册文档全套

    4. **新的垃圾回收机制(GC)**:Python 3.7对垃圾回收器进行了优化,特别是对于循环引用的处理,提高了内存管理的效率。 5. **异步IO改进**:Python 3.7进一步完善了异步编程的支持,如`asyncio`库的改进,使得...

    最新版python Python-3.7.9.tgz

    6. **垃圾回收(GC)改进**:在3.7.9中,垃圾回收机制得到了优化,减少了无用对象的内存占用,并提高了整体性能。 7. **安全增强**:此版本还包含了针对潜在安全漏洞的修复,确保了Python环境的安全性。 8. **标准...

    Python-3.7.10.tgz

    5. **垃圾回收(GC)优化**:Python 3.7 对垃圾回收机制进行了改进,提高了性能和内存管理效率。 6. **安全的随机数**:Python 3.7 引入了 `secrets` 模块,用于生成更安全的随机数,适用于密码生成、加密和其他...

    Python-3.7.6.rar

    6. **改进的垃圾回收(GC)**:Python 3.7的垃圾回收器进行了优化,特别是在处理循环引用方面,提高了内存管理效率。 7. **字典和集合的性能提升**:Python 3.7对字典(dict)和集合(set)的实现进行了优化,插入...

    python的内存管理和垃圾回收机制详解

    为了解决循环引用,Python采用了垃圾回收(GC)机制。垃圾回收主要包含两种策略:标记清除和分代回收。标记清除通过追踪每个容器对象,如字典、元组和列表,形成两个链表,用于区分可达和不可达对象。在标记阶段,...

    python-2.7.3源码

    4. **垃圾回收**:Python 使用引用计数和周期性垃圾收集策略,`gc.c` 文件中包含了垃圾回收器的实现。 5. **类型系统**:Python 的动态类型系统在 `Objects` 目录下实现,每个基本类型(如整数、浮点数、字符串等)...

    Python-2.7.15 源码

    了解Python源码对于深入学习Python的工作原理、优化代码性能以及参与Python的开发和贡献具有重要意义。 1. **源码结构**:Python源码分为多个模块,如`Include`包含了Python的头文件,`Modules`包含了C编写的Python...

    python核心源码-chm文件

    3. **内存管理**:Python的垃圾回收机制是如何工作的,如何有效地分配和释放内存,以及如何使用`sys.getrefcount()`和`gc`模块来调试内存问题。 4. **模块和包**:Python的模块导入系统,包括如何查找、加载和缓存...

    python 做海量数据处理

    - 利用数据库(如SQL或NoSQL)进行数据存储和查询,它们通常有更好的性能优化。 - 使用Python的C扩展或NumPy等库,利用底层的C语言实现提高计算速度。 - 考虑数据压缩,减少存储需求。 - 数据采样或近似算法,如果...

    详细分析Python垃圾回收机制

    Python的垃圾回收机制是自动的,通常不需要程序员过多干预,但理解其工作原理对于优化性能和防止内存泄漏至关重要。例如,避免不必要的循环引用,合理设计数据结构,以及在必要时使用`gc`模块手动触发垃圾回收,可以...

    python满溢垃圾检测

    在Python编程语言中,垃圾回收(Garbage Collection, GC)是一项重要的机制,它负责自动管理内存,释放不再使用的对象,防止内存泄漏。垃圾回收对于大型程序或长时间运行的服务尤为重要,因为错误的内存管理可能导致...

Global site tag (gtag.js) - Google Analytics