Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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 如何始终并行运行n个进程,而不等待前n个进程完成?_Python_Python 3.x_Parallel Processing_Multiprocessing - Fatal编程技术网

Python 如何始终并行运行n个进程,而不等待前n个进程完成?

Python 如何始终并行运行n个进程,而不等待前n个进程完成?,python,python-3.x,parallel-processing,multiprocessing,Python,Python 3.x,Parallel Processing,Multiprocessing,我想运行50种不同的方法。我有10个CPU可用,因此我只能同时运行10个进程。所以我运行了5次。但是,问题是前10个过程应该完成,以便启动后10个过程,这增加了完成所需的时间。我想要的是,只要有9个进程正在运行,就应该启动一个新进程,并始终运行10个进程 我把我的50门课分成5个不同的小组,然后跑 组1=[class1,class2…] 组2=[class11,class12..] 组=[group1,group2,…,group5] for group in groups: thre

我想运行50种不同的方法。我有10个CPU可用,因此我只能同时运行10个进程。所以我运行了5次。但是,问题是前10个过程应该完成,以便启动后10个过程,这增加了完成所需的时间。我想要的是,只要有9个进程正在运行,就应该启动一个新进程,并始终运行10个进程

我把我的50门课分成5个不同的小组,然后跑

组1=[class1,class2…] 组2=[class11,class12..]

组=[group1,group2,…,group5]

for group in groups:

    threads = []

        for x in group:
            threads.append(mp.Process(target= x().method(), args= (b,)))

        for thread in threads:
            thread.start()

        for thread in threads:
            thread.join()

您应该创建一个进程池并使用apply_async方法:

from multiprocessing import Pool
pool = Pool(processes=10) # start 10 worker processes
for arg in args:
  pool.apply_async(yourFunc, args = (arg, ))
pool.close()
pool.join()

查看
多处理.Pool
。如上所述,您的问题已由解决。请记住,你的主体代码也占用了一个线程,除非它在睡觉!