当前位置: 首页 > 面试题库 >

使用Selenium GeckoDriver和Firefox时是否可以减少内存RAM消耗

勾安翔
2023-03-14
问题内容

我将Selenium和Firefox Webdriver与python配合使用,以从网站中抓取数据

但是在代码中,我需要访问该网站超过10k次,并且这样做要消耗大量RAM。

通常,当脚本访问该站点2500次时,它已经消耗了4GB或更多的RAM,并且停止工作。

是否可以在不关闭浏览器会话的情况下减少内存RAM的消耗?

我问这是因为,当我启动脚本时,需要手动登录该站点(两因素加成,下面未显示代码),如果关闭浏览器会话,则需要再次登录该站点。

for itemLista in lista:
    driver.get("https://mytest.site.com/query/option?opt="+str(itemLista))

    isActivated = driver.find_element_by_xpath('//div/table//tr[2]//td[1]')
    activationDate = driver.find_element_by_xpath('//div/table//tr[2]//td[2]')

    print(str(isActivated.text))
    print(str(activationDate.text))

    indice+=1
    print("numero: "+str(indice))

    file2.write(itemLista+" "+str(isActivated.text)+" "+str(activationDate.text)+"\n")

#close file
file2.close()

问题答案:

我发现了如何避免内存泄漏。

我只是用

time.sleep(2)

file2.write(itemLista+" "+str(isActivated.text)+" "+str(activationDate.text)+"\n")

现在,firefox在不消耗大量内存的情况下运行

太完美了。

我不知道为什么停止停止会消耗如此多的内存,但是我认为它正在增加内存消耗,因为它没有时间来完成每个driver.get请求。



 类似资料:
  • 问题内容: 我一直在为OpenGL练习编写Minecraft副本(据我估计很多),但是在编写了基本的渲染API之后,我注意到真正的Minecraft 占用了 大量 内存或内存- 大约800MB!我完全可以理解为什么它必须记住所有的块,以及生成器的小怪和地形数据……我问自己:“此块与该块完全相同。它们可以在代码中吗? ” 并记得C ++有指针,所以我试图用我能想到的唯一方法在Java中做同样的事情,

  • 我需要让IntelliJ的想法使用更少的ram,有什么建议可以让它使用更少的ram吗?

  • 问题内容: 我正在编写独立于操作系统的无锁队列,到目前为止,它工作得很好,但是内存管理方面的问题很小。我不确定它的gcc问题还是我的。问题:将元素添加到列表时,内存增加,但是从列表中删除元素(free(elementPointer);)时,内存使用率没有变化。 但是,当我使用pthreads时,N个生产者和M个消费者的 内存使用量始终约为10mb(当尝试添加和删除〜10kk元素时),因此看起来自由

  • 调用clear方法时,内存似乎减少了。然而,从其他答案来看,似乎< code>clear方法从未收缩过< code>HashMap。那么为什么内存会减少呢?

  • 在android应用程序中使用Glide v4。用例是有一个活动在backback中有几个片段。每个片段将从远程加载一到不到十个图像。 具有用于将图像加载到ImageView的kotlin扩展: 片段中的典型调用如下: 问题是,每当看到一个片段并将其添加到Backback时,探查器中的图形内存就会增加50 mg。除了片段中的图像之外,没有太多其他数据。如果注释掉,加载的图像似乎减少了很多。 不确定

  • 我们希望单独写每个列表,也以前写的文件不应该加载到堆,而写下一个列表。