Python与selenium并行执行

2023-12-23

我对使用 selenium 在 python 中并行执行感到困惑。似乎有几种方法可以解决这个问题,但有些似乎已经过时了。

  1. 有一个名为的 python 模块python-wd-parallel好像有一些功能可以做到这一点,但这是 2013 年的,现在还有用吗?我还发现这个例子 https://saucelabs.com/blog/parallel-testing-with-python-and-selenium-on-sauce-online-workshop-recap.

  2. There's concurrent.futures,这看起来更新了很多,但实现起来并不那么容易。有人有一个在硒中并行执行的工作示例吗?

  3. 还有只使用线程和执行器来完成工作,但我觉得这会更慢,因为它没有使用所有核心并且仍然以串行形式运行。

是什么最新方式使用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(使用前将#替换为@)

Python与selenium并行执行 的相关文章

  • 如何有效地从连续字符串中提取文字单词? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将没有空格的文本拆分为单词列表 https stackoverflow com questions 8870261 how to split text without spaces into li
  • 如何将本机 popcount 与 numba 一起使用

    我正在使用 numba 0 57 1 我想在我的代码中利用本机 CPU popcount 我现有的代码太慢 因为我需要运行它数亿次 这是一个 MWE import numba as nb nb njit nb uint64 nb uint6
  • 量角器:向下滚动

    我的页面上有一个按钮 当用户向下滚动时可见 因此 量角器测试给了我一个错误 UnknownError 未知错误 元素在点 94 188 处不可单击 我尝试使用 browser executeScript window scrollTo 0
  • 如何忽略传递给函数的意外关键字参数?

    假设我有一些功能 f def f a None print a 现在 如果我有一本字典 比如dct a Foo 我可以打电话f dct 并得到结果Foo打印 但是 假设我有一本字典dct2 a Foo b Bar 如果我打电话f dct2
  • Python 按照层次结构按多个分隔符分割字符串

    我只想根据多个分隔符 例如 and 和 按顺序分割字符串一次 例子 121 34 adsfd gt 121 34 adsfd dsfsd and adfd gt dsfsd adfd dsfsd adfd gt dsfsd adfd dsf
  • Spyder 导入模块出错

    我正在尝试在 Spyder 中使用 sklearn 一开始 当我尝试导入它时 我收到 ImportError No module named sklearn 然后我用 PYTHONPATH 管理器设置 PATH 然后使用工具菜单中的 更新模
  • Django 未在 404 页面上应用应用程序中的 CSS 文件

    姜戈3 0 8 Python 3 7 x 我有一个包含一些应用程序的 Django 项目 我正在尝试为 400 403 404 500 错误制作一些 默认 错误页面 我已经这样做了 并显示了适当的模板 但没有任何样式或 JS 在 404 错
  • Windows Defender 检测 Python EXE 为木马

    我制作了一个 Python 脚本 将 Windows 目录以 zip 形式邮寄给我 我使用 sched 模块添加了一个调度程序 每小时重复一次 我试图制作一个简单的同步应用程序供个人使用 在 Windows 启动时启动 我使用将其转换为 e
  • 在 vim 折叠线中语法高亮 Python

    我发现代码折叠 http en wikipedia org wiki Code folding帮助我更好地组织我的文件 因此 在我的底部 vimrc 我启用vim代码折叠 http vimdoc sourceforge net htmldo
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • PyCharm 无法识别字典值类型

    我有一个简单的代码片段 其中我将字典值设置为空列表 new dict for i in range 1 13 new dict i 现在 如果在下一行的循环内我会输入new dict i 并添加一个点 我希望 PyCharm 向我显示可用于
  • 如何在交互式绘图(Python)中获得鼠标指向的(x,y)位置?

    我使用 ipython 笔记本 带有魔法 matplotlib nbagg 我正在审查matplotlib widget Cursor但仅查看光标widgets Cursor http matplotlib org 1 4 3 exampl
  • 如何绘制多类分类器的精度和召回率?

    我正在使用 scikit learn 我想绘制精度和召回曲线 我正在使用的分类器是RandomForestClassifier scikit learn 文档中的所有资源都使用二元分类 另外 我可以绘制多类的 ROC 曲线吗 另外 我只找到
  • 使用 Python 脚本打开特定文件类型?

    如何使 Python 脚本成为特定文件类型 例如 foo 的默认应用程序 例如 当我双击 Finder Explorer 中的文件时 我希望该文件在 Python 脚本中打开 这可以在 Win 和 或 OS X 中实现吗 如果重要的话 该应
  • 如何在 Sublime 2 REPL Mac 中运行 Python 3

    我的问题如下 我安装了 sublime 2 和 sublime repl 插件 一切正常 我唯一需要的是更改在控制台内置的 sublimerepl 上运行的 python 版本 我的意思是 我有 python 2 7 5 预先安装了 mav
  • Celery:每个工作人员的 task_acks_late 的不同设置/向 celery 添加自定义选项

    这个问题是后续问题django celery 禁用一个工作者的预取 有错误吗 https stackoverflow com questions 58290045 django celery disable prefetch for one
  • 如何保持 python 3 脚本 (Bot) 运行

    不是母语英语 抱歉 英语可能很蹩脚 我也是编程新手 您好 我正在尝试使用 QueryServer 连接到 TeamSpeak 服务器来创建机器人 经过几天的努力 它有效 只有 1 个问题 而我却被这个问题困扰了 如果您需要检查 这是我正在使
  • Pip 突然使用了错误版本的 Python

    在 os x 上使用 pip 时遇到一个奇怪的问题 据我所知 快速查看我的 bash history 似乎可以确认 我最近没有对我的配置进行任何更改 唉 pip 命令似乎突然使用了与以前不同的 python 版本 到目前为止 我使用命令 p
  • Flask 扩展未在 app.extensions 中注册

    我想访问在我的 Flask 应用程序上注册的一些扩展 我尝试使用app extensions 但我初始化的一些扩展不在字典中 from flask import current app current app extensions get
  • 在Python中从CSV文件中获取随机行并找到相应的单词,就像测验一样

    抱歉标题含糊不清 想不出更好的表达方式 我有一个包含德语 英语单词的 CSV 文件 如下所示 Ja Yes Nein No Katze Cat 我希望我的 python 脚本从 CSV 文件中打印一个随机的德语单词 并要求他们输入英语单词

随机推荐

  • UIAlertView 中的时间选择器

    我需要一个要求输入时间的弹出窗口 我认为警报视图是可行的方法 但我不知道从哪里开始将时间选择器嵌入到警报视图中 除非有更好的方法来做到这一点 对于其他人 我将评论中的问题改编为时间选择器 如下所示 let vc UIViewControll
  • Python:检查列表中至少一个正则表达式是否与字符串匹配的优雅方法

    我有一个 python 中的正则表达式列表和一个字符串 有没有一种优雅的方法来检查列表中的至少一个正则表达式是否与字符串匹配 我所说的优雅 是指比简单地循环所有正则表达式并根据字符串检查它们并在找到匹配项时停止更好的方法 基本上 我有这个代
  • 跨一对多关系选择 COUNT

    对于两张桌子 player and team 对于 1 关系 球员与球队 您如何计算每个球队有多少球员 失败的尝试 SELECT team teamid SELECT COUNT player team FROM player FROM t
  • Django 注释总和

    我正在尝试对查询集中包含多行的列进行简单求和 我的直接问题是 a 我该如何设置get queryset 包括一列的总和以及 b 如何访问模板中的该元素 下列的this https stackoverflow com questions 86
  • Python正则表达式匹配:## ##

    我正在逐行搜索文件中是否出现 random string 除了多个 的情况外 它都有效 pattern prog re compile pattern string lala hey there result prog search str
  • 优化 R 中的买入和卖出信号

    我需要优化现有的买入和卖出信号 就像 r 中的 backtrader 一样 Signal会看起来像 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 where 1 持有 0 买入 1 卖出 优化信号后应该是 1 1
  • Octave信号包安装

    我使用的是 Ubuntu 16 04 目前使用 Octave 作为 Matlab 的倒数进行信号处理 一切都很好 直到我需要使用medfilt1函数来获取中位数 Octave 生成 了一个错误报告 指出我的系统上未安装信号包 浏览了一下后我
  • 如何从 Int 进行转换?到字符串

    在 Swift 中 我无法通过以下方式将 Int 转换为 String var iString Int 100 var strString String iString 但是我的变量是 Int 吗 有错误 Cant invoke init
  • 使用 Webpack 连接并缩小所有 less 文件而不导入它们

    我有一个包含大约 20 个独立的较少文件的文件夹 我需要通过 Webpack 将它们连接成一个文件并将其存储在我的 dist 文件夹中 我当前的Webpack配置文件如下 const path require path const webp
  • IBOutlet 何时初始化?

    我通过 Interface Builder 设置了文本视图的出口 文本视图加载正常 但是我无法以编程方式访问它的任何属性 因为出口始终是nil 什么时候实例化 即使在我之后applicationDidFinishLoading被调用 它仍然
  • 禁用 JList 单元格选择属性

    我正在尝试显示一个array of strings in a JList 然后将其添加到JPanel using Java Swing 我在显示数据时没有问题Jlists 但是我想删除允许用户选择项目的默认属性Jlist 我试图简单地向用户
  • 在无向图中查找循环(​​boost)并返回其顶点和边

    我需要一个在无向图中找到循环 提升 并返回其顶点和边的函数 它只需要返回图中一个周期的顶点 边 我的问题是 使用 boost 来做到这一点的最佳方法是什么 我没有使用它的经验 我不知道Boost 但是here https stackover
  • Node.js 事件循环

    Node js I O 事件循环是单线程还是多线程 如果我有多个 I O 进程 节点会将它们放入外部事件循环中 它们是按顺序处理 首先是最快的 还是处理事件循环以同时处理它们 以及哪些限制 事件循环 Node js 事件循环在单个线程下运行
  • 在 Orchard CMS 中将不同的 CSS 文件添加到不同的页面?

    假设 Orchard CMS 中有两个页面 主页和关于我们页面 我想在主页上使用 RoyalSlider 它有自己的 CSS 文件 如何仅将其包含在主页上而不包含在 关于我们 页面上 在 Orchard CMS 中 我使用 Contoso
  • Android 地图 v2 在第二次充气时出现错误

    我正在尝试在我的应用程序中使用新的 Android 地图 我有一个 FragmentActivity 其布局包含 除其他外
  • scoverage:结合 test 和 it:test 的覆盖率

    我用过滤器分割了单元测试和集成测试 lazy val FunTest config it extend Test def funTestFilter name String Boolean name endsWith Spec def un
  • 正则表达式选择多行字符串中的最后一行

    我有一个 ANT 脚本 它有一个属性 其值可以是一行或多行 例如 财产 prop1 A 12 1 REL B121000 10 18 2011 1700 A 12 1 REL B121001 10 25 2011 6059 A 12 1 R
  • 获取 NullPointerException:尝试在 Android 中读取字节数组时尝试获取 Parcelable 中空数组的长度

    我有一个实现 Parcelable 的类 我的所有值都通过 writeToParcel 方法设置正常 但在构造函数中读取时 我遇到了引发 NullPointerException 的字节数组问题 public final class Pro
  • 字符串被分配给列表而没有编译错误[重复]

    这个问题在这里已经有答案了 据我所知 Java 中泛型的主要目的之一是提供编译时类型安全 如果它被编译 代码将毫无问题地运行 那么为什么下面的代码会被编译呢 public static void main String args Strin
  • Python与selenium并行执行

    我对使用 selenium 在 python 中并行执行感到困惑 似乎有几种方法可以解决这个问题 但有些似乎已经过时了 有一个名为的 python 模块python wd parallel好像有一些功能可以做到这一点 但这是 2013 年的