在python中处理大量数据,我应该使用多个线程/进程吗?

时间:2014-02-21 23:43:55

标签: python multithreading python-2.7 multiprocessing data-processing

我正在编写一个程序来处理一个巨大的文件(~1.5GB)。我在具有相当好的CPU(8核)的Windows 7计算机上运行Python 2.7。以任何方式使用多个线程或进程会更有效吗?截至目前,整个过程需要大约一个小时的时间。它每秒大约有1000个数据条目,处理总数只有400多万。

1 个答案:

答案 0 :(得分:2)

您需要的是producer-consumer technique。这个网站有一个很好的解释:Python producer/consumer with exception handling

第二个示例使用库来实现它(http://pypi.python.org/pypi/proconex/),但不是!这是一项基本技术,您可以手动完成并根据自己的需要进行调整。

在您的情况下,读者将成为制作人,处理将在几个消费者中完成。

如果你需要在最后合并数据,写入另一个队列并让另一个线程写/处理它。

至关重要profile your code