1

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

n例如,如果它可以从队列中读取 url,然后射击n进程或线程来处理下载和处理,它会更快并正确利用资源。

如果您能帮助我解决这些问题,我将不胜感激:

  1. 可以使用哪些软件包来解决这个问题?
  2. 你还能想到什么其他方法?
4

2 回答 2

2

您可能想查看Python 多处理库。使用multiprocessing.pool,您可以给它一个函数和一个数组,它会使用数组的每个值并行调用该函数,使用您指定的尽可能多或尽可能少的进程。

于 2013-07-31T20:50:08.457 回答
1

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

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

于 2013-07-31T21:03:51.850 回答