Как добавить указанное c количество дополнительных работников в существующий многопроцессорный пул? - PullRequest
0 голосов
/ 10 февраля 2020

В приведенной ниже ситуации я создал пул по умолчанию с двумя работниками и выполняю задачи. Во время обработки задачи task_queue регулярно проверяется, поэтому он не превышает определенного предела длины и предотвращает загромождение потока вверх / вниз. Как динамически добавить больше рабочих, чтобы уменьшить длину очереди задач?

import multiprocessing as mp

... code snippet...

def main(poolsize, start_process):

    pool = mp.Pool(processes=poolsize, initializer=start_process)
    done = False

    task_queue = []

    while True:

        ... snippet code : do something ...

        if len(task_queue) >= 10:

            ... code to expand pool goes here...

        if done == True:
            break

    .. do final something ...

if __name__ == '__main__':

#    freeze_support()

    poolsize = 2

    main(poolsize)

1 Ответ

0 голосов
/ 10 февраля 2020

Чтобы добавить больше рабочих во время выполнения задания по обработке пула, вы можете добавить нижеприведенную функцию в while-l oop:


def repopulate(pool, add_workers):

    current_pool_size = len(pool._pool)         # _.pool gets the current pool size.

    new_pool_size = current_pool_size + add_workers

    pool._processes = new_pool_size

    pool._repopulate_pool()

    return pool

В пределах while-l oop из main():


if len(task_queue) >= 10:

    new_workers = 2

    repopulate(poolname, new_workers)

...