Я использую многопроцессорный пул для разделения задач между различными процессами. Я заметил странное поведение, когда только половина ожидаемых рабочих начинает работать после вызова 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