multiprocessing.Pool
не будет создавать несколько потоков на процесс, а несколько однопоточных процессов. «Параллельные процессы» означают несколько параллельных процессов, а не отдельные процессы, которые как-то параллельны внутри себя.
Каждый процесс в multiprocessing.Pool
будет работать одновременно только на одном ядре, поэтому вы должны создавать столько процессов, сколько вы хотите, чтобы использовались ядра - в этом случае, если вы хотите потенциально использовать все восемь ядер, вам нужно восемь процессов в пуле:
pool = Pool(8)
Вы также не можете передавать аргумент вообще, и Pool
автоматически выделит столько процессов, сколько у вас ядер ЦП.
Документация для multiprocessing.Pool
:
процессов - количество рабочих процессов, которые нужно использовать. Если обрабатывает , равное None
, то используется число, возвращаемое os.cpu_count()
.
Обратите внимание, что на самом деле вы не можете сказать Pool
об использовании определенного ядра или определенного количества ядер - это решение принимается вашей операционной системой, которая обычно пытается распределить рабочие нагрузки равномерно между ядрами.