我对使用 selenium 在 python 中并行执行感到困惑。似乎有几种方法可以解决这个问题,但有些似乎已经过时了。
-
有一个名为的 python 模块python-wd-parallel
好像有一些功能可以做到这一点,但这是 2013 年的,现在还有用吗?我还发现这个例子 https://saucelabs.com/blog/parallel-testing-with-python-and-selenium-on-sauce-online-workshop-recap.
-
There's concurrent.futures
,这看起来更新了很多,但实现起来并不那么容易。有人有一个在硒中并行执行的工作示例吗?
-
还有只使用线程和执行器来完成工作,但我觉得这会更慢,因为它没有使用所有核心并且仍然以串行形式运行。
是什么最新方式使用selenium进行并行执行?
Use joblib的并行 https://joblib.readthedocs.io/en/latest/generated/joblib.Parallel.html模块来做到这一点,它是一个很棒的并行执行库。
假设我们有一个名为的 url 列表urls
我们想同时截取每一个的屏幕截图
首先让我们导入必要的库
from selenium import webdriver
from joblib import Parallel, delayed
现在让我们定义一个将屏幕截图作为 base64 的函数
def take_screenshot(url):
phantom = webdriver.PhantomJS('/path/to/phantomjs')
phantom.get(url)
screenshot = phantom.get_screenshot_as_base64()
phantom.close()
return screenshot
现在要并行执行你要做的就是
screenshots = Parallel(n_jobs=-1)(delayed(take_screenshot)(url) for url in urls)
当该行完成执行时,您将拥有screenshots
来自所有运行的进程的所有数据。
关于并行的解释
-
Parallel(n_jobs=-1)
意味着使用所有可以使用的资源
-
delayed(function)(input)
is joblib
为您尝试并行运行的函数创建输入的方式
更多信息可以在joblib
docs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)