开始新的过程,而无需等待所有其他过程完成



如果我开始这样的多个进程:

        procs = []
        for agent_id in agents:
            proc = Process(target=beginmultiproc, args=(id))
            procs.append(proc)
            proc.start()
        # wait for processes to finish
        for proc in procs:
            proc.join()

有没有办法在完成后立即开始一个新过程,而不是需要等待所有过程?我想一次运行8个进程,因为这是我的CPU有多少个核心,但是我需要运行8个以上的工作,因此一旦一个过程完成,我想开始下一个过程。p>我知道pool.map,但在这种情况下我无法使用它。

您没有比8更多的流程比8。使用multiprocessing.queue安排工作。如果一个过程是空闲的,则从该队列中获取一些东西,然后对其进行处理,直到队列完成为止。您不必杀死流程,也不必再产生一个。

您还可以看一下ProcessPoolExecutor,如果我没记错的话,它是在多处理之上构建的,并提供了一种更简单的做事方式。

或者,检查具有" as_complet"方法的并发期货,该方法将在每个过程完成时产生结果,使您可以立即与这些值一起工作。

相关内容

  • 没有找到相关文章

最新更新