Как увеличить количество процессов в зависимости от загрузки процессора? - PullRequest
0 голосов
/ 29 марта 2019

Я выполняю много заданий разного размера в многопроцессорной среде 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()
...