如何始终并行运行 n 个进程,而无需等待前 n 个进程完成



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

我把我的 50 个班级分成 5 个不同的小组并跑步。

组 1 = [类 1, 类 2...]组 2 = [类 11, 类 12..]

组 = [组 1, 组 2, ..., 组 5]

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

https://docs.python.org/2/library/multiprocessing.html

相关内容

  • 没有找到相关文章

最新更新