Python из-за GIL (Global Interpreter Lock) не может эффективно использовать многопоточность для CPU-интенсивных задач. Но это не значит, что мы лишены возможности распараллеливать вычисления. Для таких случаев у нас есть модули
multiprocessing и concurrent.futures, позволяющие задействовать все ядра процессора.Pool создает группу рабочих процессов и распределяет задачи между ними. Параметр processes определяет количество процессов - если не указан, используется количество, равное числу ядер CPU#theory // Just Python
