0

我需要使用硒进行堆生成的网页的抓取工作。我可以一次打开webdriver的多个实例,并将网站传递给使用队列的实例。用硒进行网页扫描的线程或多处理

虽然它可以以多种方式完成。我已经尝试了多线程模块和多处理模块的池和进程方式。

所有工作都会很快完成。

这让我想知道:在这种情况下,哪个模块是最好的?

+0

线程更容易协调并使用更少的内存,然后进程。但这取决于你,没有优选的方式。 – freakish

回答

1

CPython在进程线程之间进行选择的主要因素是基于您的工作负载类型。

如果您有一个I/O绑定类型的工作负载,其中大部分应用程序时间用于等待数据进入或离开,那么您的最佳选择是使用线程。

如果您的应用程序花费大量时间使用CPU,那么Processes是您的首选工具。

这是因为在CPython(最常用的解释器)中,一次只有一个线程可以使用CPU核心。有关此限制的更多信息,请阅读全局解释器锁(GIL)。

当使用通常被忽略的进程时还有另一个优点:进程允许实现更大程度的隔离。这意味着如果你有一些不稳定的代码(你的情况可能是抓取逻辑)可能会挂起或崩溃,将其封装在单独的进程中可以让你的服务检测到异常并恢复(终止进程并重新启动它)。

相关问题