Python 同时运行一定数量的线程/进程
我需要同时运行一定数量的线程或进程,直到它们全部完成。在Python2.6中如何做到这一点。(注意:我相信Python3.0有ThreadPoolExecutor,但这对我没有帮助,因为我们使用的是2.6) 我尝试了以下方法:Python 同时运行一定数量的线程/进程,python,multithreading,multiprocessing,python-2.6,Python,Multithreading,Multiprocessing,Python 2.6,我需要同时运行一定数量的线程或进程,直到它们全部完成。在Python2.6中如何做到这一点。(注意:我相信Python3.0有ThreadPoolExecutor,但这对我没有帮助,因为我们使用的是2.6) 我尝试了以下方法: pool = multiprocessing.Pool(2) try: for table_name in table_list: pool.apply_async(Processor(table_name, se
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个线程。一旦其中一个完成,它应该选择下一个,然后选择下一个&依此类推,直到所有的都被处理
在Python2.6中如何实现这一点?请帮忙
pool.apply_async(Processor(table_name, self.type, self.properties).exec())
立即调用.exec
您需要延迟,因此应传递.exec
函数:
pool.apply_async(Processor(table_name, self.type, self.properties).exec)
见谢谢你,丹!成功了。一个不同但相关的问题。现在输出都混在一起了,所以我不知道哪一行来自哪个进程。有没有简单的方法来解决这个问题?我必须使用日志框架或类似的东西吗?要么让它们在输出行前面加前缀,要么让它们写入不同的输出。