1

我一直在尝试从网站访问一些数据。为此,我一直在使用 Python 的 mechanize 和 beautifulsoup4 包。但是由于我必须解析的页面数量大约为 100,000 甚至更多,因此使用单个线程单独执行它是没有意义的。我尝试了 python 的 EventLet 包以具有一些并发性,但它没有产生任何改进。谁能建议我可以做的其他事情,或者应该做些什么来加快数据采集过程?

4

1 回答 1

0

我将引用我自己对这个问题的回答,因为它也非常适合这里:


对于您的特定任务,我会推荐一个multiprocessing worker pool。您只需定义一个池并告诉它您想要使用多少个进程(默认情况下每个处理器核心一个)以及您想要在每个工作单元上运行的功能。然后,您准备好列表中的每个工作单元(在您的情况下,这将是一个 URL 列表)并将其提供给工作池。

您的输出将是原始数组中每个工作项的工作函数的返回值列表。所有很酷的多处理优点都将在后台发生。当然还有其他使用工作池的方法,但这是我最喜欢的一种。

快乐的多处理!

于 2012-08-01T08:28:51.053 回答