我正在Python多处理中运行许多不同大小的作业。仅当CPU利用率低于80%时才如何添加新作业(进程)? 有些作业可能需要几纳秒的时间,而另一些作业可能要花几分钟才能提高CPU利用率。 我想在Python中使用 Process 而不是 Pool ,因为 Pool 不允许生成子进程。 目前,我正在使用类似于Baedsch建议的here中的这段代码:
import multiprocessing
def chunks(l, n):
for i in range(0, len(l), n):
yield l[i:i + n]
numberOfThreads = 4
if __name__ == '__main__':
jobs = []
for i, param in enumerate(params):
p = multiprocessing.Process(target=f, args=(i,param))
jobs.append(p)
for i in chunks(jobs,numberOfThreads):
for j in i:
j.start()
for j in i:
j.join()