Skip to main content
 首页 » 编程设计

python之是否可以在 python 中并行化 selenium webdriver get_attribute 调用

2024年10月24日40sharpest

我正在运行这段代码

from multiprocessing.Pool import ThreadPool 
from selenium import webdriver 
driver = webdriver.Firefox() 
driver.get(url) 
elements = driver.find_elements_by_class_name("class-name") 
pool = ThreadPool(4) 
async = [pool.apply_async(fn_which_calls_get_attribute,(element,)) for element in elements] 
results = [result.get() for result in async] 

这对于某些结果工作正常,但对于其他结果会抛出 ResponseNotReady 错误。如果我使用“pool.apply”而不是异步版本,它会按预期运行。

是不是我一次多次调用selenium driver,报错是因为它无法处理?还是我的并行化有问题?

请您参考如下方法:

只是提示 Selenium 在单线程和单核系统中运行。因此不可能在 selenium webdriver 上执行多线程。是的,您可以创建一个单独的实例并附加到多核系统的另一个核心。

我可能不会回答你的问题,但如果你正在尝试做类似的事情,那就不要做。