我正在编写一个程序来处理一个巨大的文件(~1.5GB)。我在具有相当好的CPU(8核)的Windows 7计算机上运行Python 2.7。以任何方式使用多个线程或进程会更有效吗?截至目前,整个过程需要大约一个小时的时间。它每秒大约有1000个数据条目,处理总数只有400多万。
答案 0 :(得分:2)
您需要的是producer-consumer technique。这个网站有一个很好的解释:Python producer/consumer with exception handling
第二个示例使用库来实现它(http://pypi.python.org/pypi/proconex/),但不是!这是一项基本技术,您可以手动完成并根据自己的需要进行调整。
在您的情况下,读者将成为制作人,处理将在几个消费者中完成。
如果你需要在最后合并数据,写入另一个队列并让另一个线程写/处理它。
至关重要profile your code。