gpt4 book ai didi

python - 并发和 Selenium - 多处理与多线程

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:26 25 4
gpt4 key购买 nike

我有一个脚本,它使用大量 headless Selenium 自动化和循环 HTTP 请求。我为此脚本实现线程/工作队列非常重要。我已经做到了。

我的问题是:我应该使用多线程还是多进程?线程还是进程池?我知道:

“如果您的程序花费更多时间等待文件读取或网络请求或任何类型的 I/O 任务,那么它就是 I/O 瓶颈,您应该考虑使用线程来加速它。 "

和...

“如果您的程序在大型数据集上花费更多时间在基于 CPU 的任务上,那么它就是 CPU 瓶颈。在这种情况下,您最好使用多个进程来加速您的程序。我说可能是单线程 Python 程序对于 CPU 绑定(bind)问题可能更快,这可能取决于未知因素,例如问题集的大小等。”

Selenium 的情况是怎样的?我是否认为与 Selenium 相关的所有 CPU 绑定(bind)任务都将通过 Web 驱动程序单独执行,或者我的脚本是否会受益于多个进程?

或者更简洁:当我在我的脚本中线程化 Selenium 时,网络驱动程序是否限制为 1 个 CPU 核心,与脚本线程运行的核心相同?

最佳答案

Web driver 只是一个司机,没有车司机就不能开车。

例如,当您使用 ChromeDriver 与浏览器通信时,您将启动 Chrome。 ChromeDriver 本身不进行计算,但 Chrome 会进行计算。

所以澄清一下,webdriver是一个操纵浏览器的工具,但它本身不是浏览器。

基于此,您绝对应该选择线程池而不是进程池,因为它肯定是 python 脚本中的 I/O 绑定(bind)问题。

关于python - 并发和 Selenium - 多处理与多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52617726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com