我需要同时运行一定数量的线程或进程,直到所有线程或进程完成。我如何在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中执行此操作?请帮忙。
答案 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)