Чтобы уменьшить объем памяти, вы должны использовать ChromeDriver-Service:
Сначала запустите службу, затем используйте ее при создании новых драйверов и, наконец, остановите службу перед выходом из программы.
Поместите приведенный ниже код в chrome_factory.py, а затем:
- при запуске программы chrome_factory.start_service ()
- для создания нового вызова драйвера chrome_factory.create_driver ()
- служба и драйверы будут автоматически остановлены / завершены при выходе из программы.
Использование этого подхода приведет к тому, что когда-либо будет только один процесс chromedriver.exe.
# chrome_factory.py
import atexit
from os.path import expanduser
from typing import Optional
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
EXECUTABLE = expanduser("~/bin/chromedriver")
_chrome_service: Optional[Service] = None
def start_service():
global _chrome_service
_chrome_service = Service(EXECUTABLE)
_chrome_service.start()
atexit.register(_chrome_service.stop)
def create_driver() -> webdriver.Remote:
global _chrome_service
opts = webdriver.ChromeOptions()
opts.add_argument("--headless")
driver = webdriver.Remote(_chrome_service.service_url,
desired_capabilities=opts.to_capabilities())
atexit.register(driver.quit)
return driver
def main():
start_service()
for _ in range(20):
create_driver()
if __name__ == '__main__':
main()