В свое время использовали
Siege-тест чтобы проверить разные возможные конфигурации
Тут надо учитывать особенность питона и в частности GIL, так что задачи требующии процессорного времени не паралеляться с помощью потоков, даже при наличии нескольких ЦП. С другой стороны для задач требующих ввода/вывода потоки дают свой прирост, к тому же поток потребляет меньше памяти, чем целиком процесс.
Если ваша программа не полагается на однопоточность, то нет смысла иметь количество процессов значительно превышающих количество ЦП/ядер. Идеальней будет использовать гибрид, количество процессов под количество ЦП, количество потоков… ну тут зависит больше от того, сколько памяти. У нас на разных проектах это обычно 5-25 потоков.