Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 同时运行一定数量的线程/进程_Python_Multithreading_Multiprocessing_Python 2.6 - Fatal编程技术网

Python 同时运行一定数量的线程/进程

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

我需要同时运行一定数量的线程或进程,直到它们全部完成。在Python2.6中如何做到这一点。(注意:我相信Python3.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个线程。一旦其中一个完成,它应该选择下一个,然后选择下一个&依此类推,直到所有的都被处理

在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)

谢谢你,丹!成功了。一个不同但相关的问题。现在输出都混在一起了,所以我不知道哪一行来自哪个进程。有没有简单的方法来解决这个问题?我必须使用日志框架或类似的东西吗?要么让它们在输出行前面加前缀,要么让它们写入不同的输出。