用于网络操作的多进程与多线程

时间:2017-07-25 22:13:21

标签: python multithreading web-scraping multiprocessing

我正在构建一个同时发出多个请求的Web抓取工具。我目前正在使用multiprocessing模块这样做,但由于它在数字海洋液滴上运行,我遇到了处理器/内存瓶颈。

由于这是一个网络刮板,并且在脚本上花费的大部分时间可能都在等待网络,因此为了减少资源使用而不是更有效地使用线程?线程是否检测到阻塞网络调用并释放锁定?交织多处理和多线程是否可行?

1 个答案:

答案 0 :(得分:2)

由于multiprocessing模块的开发基本上与之前的threading模型兼容,因此您应该不会发现在单个进程中转移到线程操作太困难了。 / p>

任何阻塞调用(主要是I / O)都会导致调用线程被挂起(变得不可运行),因此其他线程将有机会使用CPU。

虽然可以在多个流程中使用多线程,但通常不会这样做。