概得传媒 Python后台开发面试题

匿名网友 匿名网友 发布于: 2016-11-18 00:00:00
阅读 138 收藏 0 点赞 0 评论 0

1.你知道协程是怎么实现的吗?

python使用yield关键字实现协程。gevent使用greenlet实现协程,不是用yield关键字。

yield和greenlet都是实现协程的利器,但是greenlet提供了协程中直接切换控制权的方式(switch()方法),比生成器(yield)更加灵活、简洁。

2.你知道python的垃圾回收机制吗?

Python中为了解决内存泄漏问题,采用了引用计数实现自动垃圾回收。为每个对象维护了一个ob_refcnt字段,当新的引用指向该对象时,引用计数+1,

当一个对象的引用被销毁时-1,一旦对象的引用计数为0,该对象被立即回收,所占内存被释放。这种方法优点是简单,具有实时性。缺点是不能解决

“循环引用”的问题。为了解决这个问题,Python引入了标记-清除和分代回收两种机制。

评论列表
文章目录