實例化webdriver.Chrome
或webdriver.Firefox
產卵至少一個 等過程,因此要獲得總內存消耗估計它可能是 最簡單的衡量之前和啓動 處理後可用系統內存。如何查找使用的總內存取決於您的操作系統; psutils module支持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進程放棄它已經使用的內存回到操作系統short of terminating the process。所以我使用多處理技術在一個單獨的進程中產生每個測試,因此當它終止時使用的內存被釋放。 pool.apply()
阻止,直到worker
結束。