Python中的并行数据处理

Python中的并行数据处理,python,parallel-processing,Python,Parallel Processing,我有一个架构,它基本上是一个带有url地址的队列和一些类来处理这些url地址的内容。目前代码运行良好,但从队列中依次提取url、将其发送到相应的类、下载url内容并最终处理它的速度很慢 例如,如果它可以从队列中读取nurl,然后启动n进程或线程来处理下载和处理,那么它将更快并正确使用资源 如果您能在以下方面帮助我,我将不胜感激: 可以使用哪些软件包来解决此问题 你还能想到其他的方法吗 你可能想看看图书馆。使用多处理.pool,您可以给它一个函数和一个数组,它将使用数组的每个值并行调用函数,使用您

我有一个架构,它基本上是一个带有url地址的队列和一些类来处理这些url地址的内容。目前代码运行良好,但从队列中依次提取url、将其发送到相应的类、下载url内容并最终处理它的速度很慢

例如,如果它可以从队列中读取
n
url,然后启动
n
进程或线程来处理下载和处理,那么它将更快并正确使用资源

如果您能在以下方面帮助我,我将不胜感激:

  • 可以使用哪些软件包来解决此问题
  • 你还能想到其他的方法吗

  • 你可能想看看图书馆。使用
    多处理.pool
    ,您可以给它一个函数和一个数组,它将使用数组的每个值并行调用函数,使用您指定的尽可能多或尽可能少的进程。

    如果C调用很慢,如下载、数据库请求、其他IO,您可以只使用线程.Thread


    如果python代码很慢,比如框架、逻辑,而不是加速的解析器,则需要使用多处理池或进程。此外,它还加快了python代码的速度,但不太容易保存,需要深入了解它在复杂代码(锁、信号量)中的工作原理。

    我最近发布了并行处理示例:如果有用,我将其重新发布在那里。与处理web内容的协作。有关多处理/池解决方案和线程/线程解决方案,请参阅。使用各种框架也有很多其他方法可以做到这一点。您的代码中哪一部分最慢?@eri最慢的部分是下载url内容。@pepper使用哪种下载程序?谢谢,我来看看。我在C++中有很好的线程处理经验,所以信号量、锁、连接不是麻烦。用<代码>多处理。池< /C> >你得到进程,而不是线程。这有很大的区别。