对比webdri中Firefox与Chrome的内存消耗

2024-04-26 00:07:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试最大化的浏览器数量,我可以在我的计算机上运行脚本。当我启动webdriver时,如何计算每个Chrome或Firefox进程的内存消耗量。例如:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('www.yahoo.com')

# - or - #

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('www.yahoo.com')

Tags: fromimport脚本comget数量wwwdriver
1条回答
网友
1楼 · 发布于 2024-04-26 00:07:53

实例化webdriver.Chromewebdriver.Firefox至少产生一个 另一个进程,所以要获得总内存消耗的估计值,可能是 在启动之前和之后,最容易测量系统总可用内存 过程。如何找到使用的总内存取决于您的操作系统;psutils module支持Linux、Windows、OSX, Solaris和Sun Freed。在

import os
import multiprocessing as mp
import contextlib
import time
import selenium.webdriver as webdriver
import selenium.webdriver.support.ui as UI
import selenium.webdriver.support.expected_conditions as EC
import psutil

def worker(browsername, args, N):
    start_mem = psutil.virtual_memory()
    Driver = getattr(webdriver, browsername)
    drivers = [Driver(*args) for i in range(N)]
    end_mem = psutil.virtual_memory()
    for driver in drivers:
        driver.quit()
    return end_mem.used - start_mem.used

if __name__ == '__main__':
    N = 10
    pool = mp.Pool(1)

    for driver, args in [('Firefox', ()),
                         ('Chrome', ()), 
                         ('PhantomJS', ('phantomjs',))]:
        used = pool.apply(worker, [driver, args, N])
        print('{:>10}: {}'.format(driver, used))
        time.sleep(5)

    pool.close()
    pool.join()

收益率

^{pr2}$

因此,PhantomJS使用的内存减少了大约10倍。在

技术说明:没有可靠的方法可以强制Python进程将它使用的内存释放回OSshort of terminating the process。所以我使用了多处理来在一个单独的进程中生成每个测试,这样当它终止时,所使用的内存就会被释放。pool.apply()阻塞,直到worker结束。在

相关问题 更多 >