运行肯定没有。线程/进程同时进行

时间:2014-02-27 07:31:59

标签: python multithreading multiprocessing python-2.6

我需要同时运行一定数量的线程或进程,直到所有线程或进程完成。我如何在Python 2.6中执行此操作。 (注意:我相信Python 3.0有ThreadPoolExecutor,但这对我没有帮助,因为我们在2.6)。

我尝试了以下内容:

    pool = multiprocessing.Pool(2)

    try:
        for table_name in table_list:
            pool.apply_async(Processor(table_name, self.type, 
                self.properties).exec())
    except KeyboardInterrupt:
        pool.terminate()
    else:
        pool.close()
    pool.join()

但是它按顺序处理每个表。我想要的是,如果有10张桌子和池大小是5,那么它应该首先启动5个线程。一旦其中一个完成它应该选择下一个,然后下一个&等等,直到所有这些都被处理完毕。

我如何在Python 2.6中执行此操作?请帮忙。

1 个答案:

答案 0 :(得分:1)

pool.apply_async(Processor(table_name, self.type, self.properties).exec())

立即调用您需要延迟的.exec代替传递.exec函数:

pool.apply_async(Processor(table_name, self.type, self.properties).exec)

请参阅apply_async(func[, args[, kwds[, callback]]])