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。核心。
答案 0 :(得分:0)
如果你调用p.run()而不是p.start(),它将一次只运行一个进程,暂停直到进程运行完毕。使用p.run(),不需要调用p.join()。
编辑: 如果你试图在你的计算机上为每个线程运行一个进程(因为问题是措辞),并且你有16个线程,那么你已经拥有的代码没有问题。