网站建设数据库软件网站 空间 服务器 免费

当前位置: 首页 > news >正文

网站建设数据库软件,网站 空间 服务器 免费,网站进度条做多大,网站开发 精品课程文章目录 Python垃圾回收机制引用计数机制循环垃圾收集器小结详细讲解及实操1. 程序中的垃圾问题2. 垃圾的定义3. 自动垃圾回收机制4. 示例#xff1a;使用del方法删除垃圾对象5. 手动处理垃圾回收6. 结束程序7. 垃圾回收的自动处理8. 结束程序 python精品专栏推荐python基础知… 文章目录 Python垃圾回收机制引用计数机制循环垃圾收集器小结详细讲解及实操1. 程序中的垃圾问题2. 垃圾的定义3. 自动垃圾回收机制4. 示例使用del方法删除垃圾对象5. 手动处理垃圾回收6. 结束程序7. 垃圾回收的自动处理8. 结束程序 python精品专栏推荐python基础知识0基础入门python爬虫知识 Python垃圾回收机制 Python编程语言采用了自动垃圾回收机制它能够自动释放不再需要的对象并将其占用的内存返回给操作系统供其他程序使用。这在一定程度上减轻了程序员的负担因为他们无需手动释放内存。 引用计数机制 Python主要使用引用计数作为垃圾回收机制的一部分。每个对象都有一个引用计数器用于记录有多少个变量引用了该对象。当引用计数器归零时表示没有变量引用该对象该对象就成为垃圾对象会被垃圾回收机制自动删除。 下面是一个简单的示例来演示引用计数机制的工作原理 class Person:def init(self, name):self.name namedef del(self):print(f{self.name}对象被删除了)# 创建两个对象并相互引用 p1 Person(Alice) p2 Person(Bob)# 打印两个对象的引用计数器 print(sys.getrefcount(p1)) # 输出结果为2包括p1和参数传递中的临时引用 print(sys.getrefcount(p2)) # 输出结果为2# 断开对象之间的相互引用 p1 None p2 None# 观察析构函数的调用情况在上面的示例中我们定义了一个Person类创建了两个对象p1和p2并相互引用。使用sys.getrefcount()函数可以获取对象的引用计数。最后我们将p1和p2的引用置为None断开了它们之间的相互引用。这时可以观察到del方法被调用打印出对象被删除的消息。 循环垃圾收集器 除了引用计数机制Python还使用循环垃圾收集器Cycle GC处理循环引用。循环引用指的是两个或多个对象相互引用而没有其他对象引用它们导致无法访问这些对象。循环垃圾收集器会定期扫描内存中的对象检测循环引用并清理掉这些无法访问的对象。 以下是循环引用的示例 class A:def init(self, b):self.b bclass B:def init(self, a):self.a a# 创建两个对象并相互引用形成循环引用 a_obj A(None) b_obj B(a_obj) a_obj.b b_obj# 对象无法通过其他引用访问到 a_obj None b_obj None# 手动进行垃圾回收 gc.collect()在这个示例中我们创建了两个对象a_obj和b_obj它们相互引用形成循环引用。即使将它们的引用置为None这些对象也无法通过其他引用访问到。手动调用gc.collect()可以强制执行垃圾回收清理掉这些无法访问的对象。 需要注意的是大多数情况下不需要手动进行垃圾回收操作。Python的垃圾回收机制会在适当的时候自动执行。手动调用垃圾回收通常是在某些特殊情况下使用例如在大量创建和销毁对象的情况下以优化内存使用。 通过了解Python的垃圾回收机制程序员可以更好地管理内存提高代码的效率和可维护性。 小结 当对象之间存在循环引用时Python的循环垃圾收集器会起作用。循环垃圾收集器使用了另一种策略称为标记-清除。下面是循环垃圾收集器的工作过程 标记阶段从根对象开始循环垃圾收集器遍历所有可达的对象并将其标记为存活。清除阶段循环垃圾收集器扫描堆内存中的所有对象将未标记的对象判定为垃圾对象回收它们的内存空间。 循环垃圾收集器执行的时机由Python解释器自动控制。当达到一定条件时例如内存占用超过阈值、CPU空闲时等Python解释器会触发循环垃圾收集器的执行。 需要注意的是循环垃圾收集器的工作会导致一定的性能开销。因此在编写代码时我们应尽量避免出现循环引用的情况以减少垃圾回收的频率和开销。 此外Python还提供了gc模块允许我们对垃圾回收进行更精细的控制。通过调整gc模块的相关参数我们可以改变垃圾回收的行为例如禁用循环垃圾收集器、设置垃圾回收的阈值等。具体使用方法可以参考Python官方文档。 总结起来Python的垃圾回收机制主要包括引用计数和循环垃圾收集器。引用计数用于跟踪对象的引用情况当没有变量引用该对象时对象会被释放。循环垃圾收集器则处理存在循环引用的情况标记并清除无法访问的对象。通过这两种机制Python能够自动管理内存并进行垃圾回收减轻了程序员的负担。 详细讲解及实操

  1. 程序中的垃圾问题 程序运行过程中会产生垃圾而这些垃圾会影响程序的性能。因此我们需要及时清理这些垃圾。

  2. 垃圾的定义 在程序中没有被引用的对象被认为是垃圾。当垃圾对象过多时会影响程序的性能。

  3. 自动垃圾回收机制 在Python中有自动的垃圾回收机制。它会自动删除那些没有被引用的对象无需手动处理垃圾回收。

  4. 示例使用del方法删除垃圾对象 以下是一个示例代码展示了如何使用del方法删除垃圾对象。 class A:def init(self):self.name A类# del是一个特殊方法它会在对象被垃圾回收前调用def del(self):print(A()对象被删除了~~~,self)a A() b a # 又使用一个变量b来引用a对应的对象print(a.name)5. 手动处理垃圾回收 如果希望手动处理垃圾回收可以将对象的引用置为None或使用del语句删除引用。下面是示例代码

    将a设置为了None此时没有任何的变量对A()对象进行引用它就是变成了垃圾

    a None b None6. 结束程序 最后在代码的末尾可以加一行输入语句以便程序执行完成后等待用户输入退出。 input(回车键退出…)7. 垃圾回收的自动处理 Python的垃圾回收机制会自动删除那些没有被引用的对象无需手动处理。以下是示例代码

    定义一个类A

    class A:def init(self):self.name A类# del是一个特殊方法它会在对象被垃圾回收前调用def del(self):print(A()对象被删除了~~~,self)# 创建一个A类的实例a并引用它 a A()# 打印a的名称属性值 print(a.name)# 删除a的引用 a None# 程序运行结束后会自动调用垃圾回收机制删除没有被引用的对象当程序运行结束时Python会自动调用垃圾回收机制来删除没有被引用的对象。你可以看到在示例代码中当a的引用被设置为None时对象a就成为了垃圾对象最终会被垃圾回收机制删除。

  5. 结束程序 最后在代码的末尾可以加一行输入语句以便程序执行完成后等待用户输入退出。 input(回车键退出…)python精品专栏推荐 python基础知识0基础入门 【python基础知识】0.print()函数 【python基础知识】1.数据类型、数据应用、数据转换 【python基础知识】2.if条件判断与条件嵌套 【python基础知识】3.input()函数 【python基础知识】4.列表和字典 【python基础知识】5.for循环和while循环 【python基础知识】6.布尔值和四种语句break、continue、pass、else 【python基础知识】7.实操-用Python实现“文字PK”小游戏一 【python基础知识】7.实操-用Python实现“文字PK”小游戏二 【python基础知识】8.编程思维如何解决问题-思维篇 【python基础知识】9.函数的定义和调用 【python基础知识】10.用函数编写程序 - 实操篇 【python基础知识】10.用Python实现石头剪刀布小游戏-函数实操篇 【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇 【python基础知识】12.类与对象一 【python基础知识】12.类与对象二 【python基础知识】13.类与对象三 【python基础知识】13.类与对象四 【python基础知识】14.图书管理系统的搭建类与对象实操 【python基础知识】15.编码基础知识 【python基础知识】16.文件读写基础及操作 【python基础知识】16.“古诗默写题”的python实现文件读写和编码-实操篇 【python基础知识】17.模块的概念以及如何引入 【python基础知识】18.实操-使用python自动群发邮件 【python基础知识】19.产品思维以及流程图的使用 - 思维篇 【python基础知识】20.“午饭吃什么”的python实现产品思维-实操篇 【python基础知识】21.高效偷懒的正确打开方式-毕业篇 【python文件处理】CSV文件的读取、处理、写入 【python文件处理】Excel自动处理使用 openpyxl 【python文件处理】-excel格式处理 python爬虫知识 【python爬虫】1.爬虫基础知识 【python爬虫】2.网页基础知识 【python爬虫】3.爬虫初体验BeautifulSoup解析 【python爬虫】4.爬虫实操菜品爬取 【python爬虫】5.爬虫实操歌词爬取 【python爬虫】6.爬虫实操带参数请求数据 【python爬虫】7.爬到的数据存到哪里 【python爬虫】8.温故而知新 【python爬虫】9.带着小饼干登录cookies 【python爬虫】10.指挥浏览器自动工作selenium 【python爬虫】11.让爬虫按时向你汇报 【python爬虫】12.建立你的爬虫大军 【python爬虫】13.吃什么不会胖爬虫实操练习 【python爬虫】14.Scrapy框架讲解 【python爬虫】15.Scrapy框架实战热门职位爬取 【python爬虫】16.爬虫知识点总结复习