xen*_*ndi 6 python concurrency selenium multithreading python-3.x
我有一个使用大量无头 Selenium 自动化和循环 HTTP 请求的脚本。为此脚本实现线程/工作队列非常重要。我已经这样做了。
我的问题是:我应该使用多线程还是多进程?线程或进程池?我知道:
“如果您的程序花费更多时间等待文件读取或网络请求或任何类型的 I/O 任务,那么它就是 I/O 瓶颈,您应该考虑使用线程来加速它。”
和...
“如果您的程序在大型数据集上花费更多时间在基于 CPU 的任务上,那么它就是 CPU 瓶颈。在这种情况下,您最好使用多个进程来加速您的程序。我说可能是因为它可能是单个-对于 CPU 密集型问题,线程化 Python 程序可能更快,这可能取决于未知因素,例如问题集的大小等。”
Selenium 的情况是什么?我认为所有与 Selenium 相关的 CPU 绑定任务都将通过 Web 驱动程序单独执行是否正确,或者我的脚本是否会从多个进程中受益?
或者更简洁:当我在脚本中线程 Selenium 时,Web 驱动程序是否仅限于 1 个 CPU 内核,脚本线程运行的内核是否相同?
网络司机只是一个司机,司机没有车就无法开车。
例如,当您使用ChromeDriver浏览器进行通信时,您正在启动 Chrome。它ChromeDriver本身不进行计算,但 Chrome 会进行。
需要澄清的是,webdriver 是一个操作浏览器的工具,但它本身并不是浏览器。
基于此,您绝对应该选择线程池而不是进程池,因为它肯定是您的 python 脚本中的 I/O 限制问题。
| 归档时间: |
|
| 查看次数: |
966 次 |
| 最近记录: |