python пул многопроцессорной обработки - создано неверное количество рабочих - PullRequest
0 голосов
/ 11 марта 2020

Я использую многопроцессорный пул для разделения задач между различными процессами. Я заметил странное поведение, когда только половина ожидаемых рабочих начинает работать после вызова map_asyn c.

То есть, когда я звоню

pool = Pool(12, init_func, (pram1, param2, param3))
pool.map_async(main_process_func, list_of_items, chunksize=1)

, я вижу, что фактически 6 рабочих начинают выполнять main_process_fun c!

Но когда я добавляю параметр maxtasksperchild = 1, то есть:

pool = Pool(12, init_func, (pram1, param2, param3), maxtasksperchild=1)
pool.map_async(main_process_func, list_of_items, chunksize=1)

Затем я вижу, что 12 рабочих начинают выполнять main_process_fun c!

С моей точки зрения maxtasksperchild не должен быть связан с этим поведением. Как вы думаете, почему это происходит? И почему, во-первых, запускается только половина рабочих?

Python версия: 3.6.9 ОС: Ubuntu 18.04.4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...