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

织梦做视频网站可以吗什么the wordpress

织梦做视频网站可以吗,什么the wordpress,消费全返的 微网站开发,怎么在网站上添加地图python作为一门解释型语言#xff0c;以代码简洁易懂著称。我们可以直接对名称赋值#xff0c;而不必声明类型。名称类型的确定、内存空间的分配与释放都是由python解释器在运行时进行的。python这一自动管理内存功能极大的减小了程序员负担,这也是成就python自身的重要原因之…python作为一门解释型语言以代码简洁易懂著称。我们可以直接对名称赋值而不必声明类型。名称类型的确定、内存空间的分配与释放都是由python解释器在运行时进行的。python这一自动管理内存功能极大的减小了程序员负担,这也是成就python自身的重要原因之一。以下简要介绍一下Python的三种垃圾回收机制引用计数Python中主要通过引用计数(Reference Counting)进行垃圾回收。typedef struct_object {int ob_refcnt;struct_typeobject *ob_type;} PyObject;在Python中每一个对象的核心就是一个结构体PyObject它的内部有一个引用计数器(ob_refcnt)。程序在运行的过程中会实时的更新ob_refcnt的值来反映引用当前对象的名称数量。当某对象的引用计数值为0,那么它的内存就会被立即释放掉。以下情况是导致引用计数加一的情况:对象被创建例如a2对象被引用ba对象被作为参数传入到一个函数中对象作为一个元素存储在容器中下面的情况则会导致引用计数减一:对象别名被显示销毁 del对象别名被赋予新的对象一个对象离开他的作用域对象所在的容器被销毁或者是从容器中删除对象我们还可以通过sys包中的getrefcount()来获取一个名称所引用的对象当前的引用计数(注意这里getrefcount()本身会使得引用计数加一)sys.getrefcount(a)引用计数法有其明显的优点如高效、实现逻辑简单、具备实时性一旦一个对象的引用计数归零内存就直接释放了。不用像其他机制等到特定时机。将垃圾回收随机分配到运行的阶段处理回收内存的时间分摊到了平时正常程序的运行比较平稳。但是引用计数也存在着一些缺点通常的缺点有逻辑简单但实现有些麻烦。每个对象需要分配单独的空间来统计引用计数这无形中加大的空间的负担并且需要对引用计数进行维护在维护的时候很容易会出错。在一些场景下可能会比较慢。正常来说垃圾回收会比较平稳运行但是当需要释放一个大的对象时比如字典需要对引用的所有对象循环嵌套调用从而可能会花费比较长的时间。循环引用。这将是引用计数的致命伤引用计数对此是无解的因此必须要使用其它的垃圾回收算法对其进行补充。也就是说Python 的垃圾回收机制很大一部分是为了处理可能产生的循环引用是对引用计数的补充。标记清除(解决循环引用)Python采用了“标记-清除”(Mark and Sweep)算法解决容器对象可能产生的循环引用问题。(注意只有容器对象才会产生循环引用的情况比如列表、字典、用户自定义类的对象、元组等。而像数字字符串这类简单类型不会出现循环引用。作为一种优化策略对于只包含简单类型的元组也不在标记清除算法的考虑之列)跟其名称一样该算法在进行垃圾回收时分成了两步分别是A)标记阶段遍历所有的对象如果是可达的(reachable)也就是还有对象引用它那么就标记该对象为可达B)清除阶段再次遍历对象如果发现某个对象没有标记为可达则就将其回收。如下图所示在标记清除算法中为了追踪容器对象需要每个容器对象维护两个额外的指针用来将容器对象组成一个双端链表指针分别指向前后两个容器对象方便插入和删除操作。python解释器(Cpython)维护了两个这样的双端链表一个链表存放着需要被扫描的容器对象另一个链表存放着临时不可达对象。在图中这两个链表分别被命名为”Object to Scan”和”Unreachable”。图中例子是这么一个情况link1,link2,link3组成了一个引用环同时link1还被一个变量A(其实这里称为名称A更好)引用。link4自引用也构成了一个引用环。从图中我们还可以看到每一个节点除了有一个记录当前引用计数的变量ref_count还有一个gc_ref变量这个gc_ref是ref_count的一个副本所以初始值为ref_count的大小。gc启动的时候会逐个遍历”Object to Scan”链表中的容器对象并且将当前对象所引用的所有对象的gc_ref减一。(扫描到link1的时候由于link1引用了link2,所以会将link2的gc_ref减一接着扫描link2,由于link2引用了link3,所以会将link3的gc_ref减一…..)像这样将”Objects to Scan”链表中的所有对象考察一遍之后两个链表中的对象的ref_count和gc_ref的情况如下图所示。这一步操作就相当于解除了循环引用对引用计数的影响。接着gc会再次扫描所有的容器对象如果对象的gc_ref值为0那么这个对象就被标记为GC_TENTATIVELY_UNREACHABLE并且被移至”Unreachable”链表中。下图中的link3和link4就是这样一种情况。如果对象的gc_ref不为0那么这个对象就会被标记为GC_REACHABLE。同时当gc发现有一个节点是可达的那么他会递归式的将从该节点出发可以到达的所有节点标记为GC_REACHABLE,这就是下图中link2和link3所碰到的情形。除了将所有可达节点标记为GC_REACHABLE之外如果该节点当前在”Unreachable”链表中的话还需要将其移回到”Object to Scan”链表中下图就是link3移回之后的情形。第二次遍历的所有对象都遍历完成之后存在于”Unreachable”链表中的对象就是真正需要被释放的对象。如上图所示此时link4存在于Unreachable链表中gc随即释放之。上面描述的垃圾回收的阶段会暂停整个应用程序等待标记清除结束后才会恢复应用程序的运行。分代回收在循环引用对象的回收中整个应用程序会被暂停为了减少应用程序暂停的时间Python 通过“分代回收”(Generational Collection)以空间换时间的方法提高垃圾回收效率。分代回收是基于这样的一个统计事实对于程序存在一定比例的内存块的生存周期比较短而剩下的内存块生存周期会比较长甚至会从程序开始一直持续到程序结束。生存期较短对象的比例通常在 80%90% 之间这种思想简单点说就是对象存在时间越长越可能不是垃圾应该越少去收集。这样在执行标记-清除算法时可以有效减小遍历的对象数从而提高垃圾回收的速度。python gc给对象定义了三种世代(0,1,2),每一个新生对象在generation zero中如果它在一轮gc扫描中活了下来那么它将被移至generation one,在那里他将较少的被扫描如果它又活过了一轮gc,它又将被移至generation two在那里它被扫描的次数将会更少。gc的扫描在什么时候会被触发呢?答案是当某一世代中被分配的对象与被释放的对象之差达到某一阈值的时候就会触发gc对某一世代的扫描。值得注意的是当某一世代的扫描被触发的时候比该世代年轻的世代也会被扫描。也就是说如果世代2的gc扫描被触发了那么世代0,世代1也将被扫描如果世代1的gc扫描被触发世代0也会被扫描。该阈值可以通过下面两个函数查看和调整:gc.get_threshold()# (threshold0, threshold1, threshold2).gc.set_threshold(threshold0[, threshold1[, threshold2]])下面对set_threshold()中的三个参数threshold0, threshold1, threshold2进行介绍。gc会记录自从上次收集以来新分配的对象数量与释放的对象数量当两者之差超过threshold0的值时gc的扫描就会启动初始的时候只有世代0被检查。如果自从世代1最近一次被检查以来世代0被检查超过threshold1次那么对世代1的检查将被触发。相同的如果自从世代2最近一次被检查以来世代1被检查超过threshold2次那么对世代2的检查将被触发。get_threshold()是获取三者的值默认值为(700,10,10).总结总体来说在Python中主要通过引用计数进行垃圾回收通过 “标记-清除” 解决容器对象可能产生的循环引用问题通过 “分代回收” 以空间换时间的方法提高垃圾回收效率。
http://www.huolong8.cn/news/349749/

相关文章:

  • 网站页脚版权信息建设pc 移动网站
  • 永年网站建设公司网站背景图片
  • 开源免费建站程序用的最多的科协网站建设的建议
  • 公众微信网站建设上海人才网官网招聘肖瑶
  • 企业网站推广形式有wordpress怎么配置七牛cdn加速
  • 做网站比较好的软件我想卖东西去哪个网站
  • 深圳网站设计建设wordpress icp
  • 济南移动网站制作施工企业岗位证书有哪些
  • 建站网站如何清理缓存辽宁建设工程信息网作用
  • 做网站用什么做100个免费邮箱号码
  • 吉林省 网站建设jquery 网站后台模板
  • 龙华区网站建设深圳南山区住房和建设局网站
  • 10个网站 云主机需求在线购物网站建设
  • 如何给一个企业的网站做推广安卓app在线开发
  • 网站透明背景下载代码的网站
  • 网站做seo教程wordpress分页目录
  • 如何免费搭建网站源码毕业设计网站开发的中期报告
  • 网页设计网站模板素材广州建网站要多少钱
  • 网站的风格包含的因素wordpress手机号码
  • dw做aspx网站python基础教程推荐
  • 18年手机网站网站导航栏一般有什么内容
  • 怎么样创建做零食山楂的网站wordpress keywords description
  • 建站知乎网页版qq登录入口空间
  • 个人网站注册费用深圳人才招聘网
  • 网站logo多大建设局官网查询
  • 邢台做网站服务商免费游戏源码
  • 网站优化工作怎么样科普类网站怎么做
  • 张家界网站建设公司苏州调查公司有哪些
  • 网站建设以及网页设计需要会什么高清crm软件价格欧美
  • 电影院订票网站开发app购物网站建设