Я выполняю много заданий разного размера в многопроцессорной среде Python. Как добавить новое задание (процесс) только тогда, когда загрузка процессора меньше, скажем, 80%?
Некоторые задания могут занимать несколько наносекунд, в то время как другие могут занимать несколько минут при высокой загрузке процессора.
Я хочу использовать Process , а не Pool в python, потому что Pool не позволит порождать дочерние процессы.
В настоящее время я использую что-то похожее на этот код из здесь , предложенного Baedsch:
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()