首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    微软开源浏览器自动化工具Playwright for Python(附源码)

    我们平常用的浏览器自动化工具是什么?比较出名的是 Selenium,用过的大家应该知道。另外还有一个比较出名的是 PhantomJS,针对的是无界面的浏览器。这类工具能够通过代码的形式,控制浏览器自动完成一系列操作,不过是用来做爬虫或者是自动化的测试,都非常的方便。今天要推荐一个类似的工具,Playwright for Python,它是由微软开源的,毕竟大厂出品,我们一起来看看它有什么神奇的地方。首先 Playwright 支持以下类型的浏览器,主流的基本都覆盖了。Playwright 使用上非常简单,而且代码也很简洁,目前支持同步和异步调用两种方式。 同步方式:异步方式: 最后介绍一下 Playwright 最牛逼的一个功能,它能够自动根据你在浏览器上的操作生成对应的代码,简直不要太好用。以下是一个示例: 大厂出品就是不一样,从我整体的使用来看,Playwright 使用上要比 Selenium 和 PhantomJS 更简单的多,下次工作可以考虑使用 Playwright 了。目前,playwright-python985k430已经在Github上标星5K+,累计分支 430 个。 end

    01

    matinal:PYTHON 的垃圾回收机制

    Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用问题,通过“分代回收”(generation collection)以空间换时间的方法提高垃圾回收效率。 (1).引用计数 PyObject是每个对象必有的内容,其中ob_refcnt就是作为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用它的对象被删除,它的ob_refcnt就会减少。引用计数为0时,该对象的生命就结合了。 优点:简单,实时性 缺点:维护引用计数消耗资源,循环引用 (2).标记-清除机制 基本思路是先按需分配,等到没有空闲内存的时候从寄存器和程序栈上的引用出发,遍历以对象为节点,以引用为边构成的图,把所有可以访问到的对象打上标记,然后清扫一边内存空间,把所有没有标记的对象释放。 (3).分代技术 分代回收的整体思想是:将系统中的所有内存根据其存活时间划分不同的集合,每个集合就成为一个“代”,垃圾收集频率随着代的存活时间的增大而减小,存活时间通常利用几次垃圾回收来度量。 python默认定义了三代对象集合,索引数越大,对象存活时间越长。 举例: 当某些内存块M经过了3次垃圾收集的清洗之后还存活时,我们就将内存块M划到一个集合A中去,而新分配的内存都划分到集合B中去。当垃圾收集开始工作时,大多数情况都只对集合B进行垃圾回收,而对集合A进行垃圾回收要隔相当长一段时间后才进行,这就使得垃圾收集机制需要处理的内存少了,效率自然就提高了。在这个过程中,集合B中的某些内存块由于存活时间长而会被转移到集合A中,当然,集合A中实际上也存在一些垃圾,这些垃圾的回收会因为这种分代的机制而被延迟。

    03
    领券