如何使用多处理在python中为每个核心运行一个进程

时间:2018-03-06 06:57:30

标签: python parallel-processing multiprocessing

from multiprocessing import Process
import random
import time

def some_function(first, last):


processes = []

for m in range(1,16):
   n = m + 1
   p = Process(target=some_function, args=(m, n))
   p.start()
   processes.append(p)

for p in processes:
   p.join()

我希望程序每个CPU核心只启动一个进程,并且在完成任何已经运行的进程后,应该启动以下进程。 这些代码有哪些变化。

编辑:每个核心一个进程:例如如果总共有30个进程,并且有4个CPU核心,那么在任何时候我都只需要运行4个进程(最大值)。任何一个过程完成后,下一个过程应该开始。通过这种方式,进程运行的数量不应超过no。核心。

1 个答案:

答案 0 :(得分:0)

如果你调用p.run()而不是p.start(),它将一次只运行一个进程,暂停直到进程运行完毕。使用p.run(),不需要调用p.join()。

编辑: 如果你试图在你的计算机上为每个线程运行一个进程(因为问题是措辞),并且你有16个线程,那么你已经拥有的代码没有问题。