我正在尝试最大化可以在计算机上运行脚本的浏览器数量。启动时,如何计算每个Chrome或Firefox进程占用的内存量webdriver
。例如:
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')
实例化webdriver.Chrome
或webdriver.Firefox
产生至少一个其他进程,因此要获得总内存消耗的估计值,最简单的方法是在启动进程之前和之后测量可用的系统总内存。如何找到使用的总内存取决于您的操作系统;在的PSUtils模块支持Linux,Windows中,OSX,FreeBSD和Sun Solaris的。
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()
产量
Firefox: 1072779264
Chrome: 1124683776
PhantomJS: 102670336
因此,看来PhantomJS使用的内存减少了大约10倍。
技术说明:没有终止Python进程的可靠方法,可以强制Python进程将已使用的内存交还给OS 。因此,我使用多重处理在单独的进程中生成每个测试,以便在终止测试时释放所使用的内存。的块,直到结束。pool.apply()
worker
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句