关于python中的多处理原理,我有一个简短的问题。例如,如果有35个具有24个进程的任务,那么多处理是如何工作的?哪一个是对的?
35项任务中有35项由24个核心执行。
首先,35项任务中有24项由24个核心运行。在完成24项工作后,其余的35项任务( 11项)由11个核心运行。
如果B是对的,我怎么能在多处理中总是使用24个核呢?
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=24)
test_list = [sub_1, sub_2, sub_3, sub_4, ..., sub_35]
results = pool.map(labeling, test_list)
pool.close()
pool.join()发布于 2019-06-21 20:00:45
Python本身的任务调度是FIFO,所以一旦提交了所有任务,就由内核在池中的进程之间进行调度。多进程将进程调度的任务留给操作系统内核。
所以这比那要复杂一些。根据操作系统的决定,进程可能会以多种方式进行调度。通常,OS内核在调度进程以最大限度地利用CPU方面很聪明。因此,如果您有24个核心,以及一个由24个进程组成的池,您可以期望您的CPU得到最佳的利用--但这当然将取决于您的任务实际执行的是什么。
因此,一旦您将所有任务提交到池中:
了解CPU使用效率的最佳方法是监视CPU的使用情况。
https://stackoverflow.com/questions/56709536
复制相似问题