【问题标题】:Multiprocess vs multithreading for network operations用于网络操作的多进程与多线程
【发布时间】:2018-01-01 00:49:42
【问题描述】:

我正在构建一个同时发出多个请求的网络爬虫。我目前正在使用 multiprocessing 模块来执行此操作,但由于它在 Digital Ocean 液滴上运行,我遇到了处理器/内存瓶颈。

既然这是一个网络爬虫,而且大部分时间花在脚本上可能都在等待网络,那么使用线程来减少资源使用不是更有效吗?线程是否检测到阻塞的网络调用并释放锁?多处理和多线程交织是否可行?

【问题讨论】:

    标签: python multithreading web-scraping multiprocessing


    【解决方案1】:

    由于multiprocessing 模块的开发主要与早于它的threading 模型兼容,因此希望您不会发现在单个进程中迁移到线程操作太困难。

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多