Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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_Python 2.7_Parallel Processing_Subprocess_Python Multiprocessing - Fatal编程技术网

Python 进程池:一个进程完成后自动添加一个进程

Python 进程池:一个进程完成后自动添加一个进程,python,python-2.7,parallel-processing,subprocess,python-multiprocessing,Python,Python 2.7,Parallel Processing,Subprocess,Python Multiprocessing,我有一个函数,它创建一个进程“池”,并执行池中的每个进程 def sendAndExecutePybotTests(poolProcessNum): fullList = _generatePybotList() print fullList pool = [fullList[i:i+int(poolProcessNum)] for i in range(0, len(fullList), int(poolProcessNum))] for chunk in po

我有一个函数,它创建一个进程“池”,并执行池中的每个进程

def sendAndExecutePybotTests(poolProcessNum):
    fullList = _generatePybotList()
    print fullList
    pool = [fullList[i:i+int(poolProcessNum)] for i in range(0, len(fullList), int(poolProcessNum))]
    for chunk in pool:
        procs = []
        for executeLine in chunk:
            proc = Process(target=_executePybotTest, args=(executeLine,))
            procs.append(proc)
            # time interval=1 second for each suite
            time.sleep(1)
            proc.start()

        for proc in procs:
            proc.join()
executePybotTest(仅调用子流程以执行命令):

我用它来并行运行自动化测试。但是由于加入了这个池,它会等待池中的所有进程完成,然后继续执行其他等待执行的项目


我正在研究实现一个队列,并在池中的一个进程完成后自动执行队列中的下一个。我不知道该怎么做。

我将使用
多处理
创建/管理,并使用将测试列表分发到池中的进程。然后,每个进程都可以在接收测试时执行测试。
map
方法为您将任务分配到池中的每个进程,因此您不必自己实现它

from multiprocessing import Pool

def execute_test(input):
    print("executing test " + input)

if __name__ == "__main__":
    full_list = _generatePybotList()
    p = Pool(poolProcessNum)
    p.map(execute_test, full_list)
    p.close()
    p.join()

非常感谢这个解决方案,这对我来说非常有效@达诺
from multiprocessing import Pool

def execute_test(input):
    print("executing test " + input)

if __name__ == "__main__":
    full_list = _generatePybotList()
    p = Pool(poolProcessNum)
    p.map(execute_test, full_list)
    p.close()
    p.join()