我正在编写一个程序,该程序使用multiprocessing
模块打开15个Chrome Selenium实例。每个会话都会刷新并每五秒钟提取一些文本。这是代码:
import os
import time
import multiprocessing
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
def driver_routine(url, file_session):
chrome_options = webdriver.ChromeOptions();
chrome_options.add_argument(r'--user-data-dir=' + os.path.dirname(os.path.abspath(__file__)) + '\\' + file_session + '\\selenium')
driver = webdriver.Chrome(ChromeDriverManager().install(), options = chrome_options)
while True:
driver.get(url)
text = driver.find_element_by_xpath('//body')
time.sleep(5)
if __name__=='__main__':
processes = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
url = 'https://somesite.com/'
for i in range(len(processes)):
file_session = 'session-' + str(i)
processes[i] = multiprocessing.Process(target=driver_routine, args=(url, file_session,))
processes[i].start()
问题在于,它占用了我的CPU内存(从任务管理器中)到100%,这使我的PC工作非常缓慢。我发现在driver_routine
函数中添加了这两行:
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
将减少CPU内存使用量。这样就解决了我的问题。但是现在的问题是我看不到浏览器实例。有什么办法可以满足我的两个问题?我当时想也许以--headless
模式启动浏览器,并在需要时重新打开它的GUI表单(以某种方式),那真是太棒了。或者可能是有关内存使用问题的解决方法。我是python的新手,仍在学习。任何帮助表示赞赏。