толку никакого нет, наоборот, даже медленнее работает
Что логично - ваше разбиение делает ситуацию хуже, а не лучше. Вы сначала ждете первые несколько блоков, потом следующие несколько блоков и т.д. - если скажем у вас 2 потока, то, пока не досчитаются первый и второй блоки, следующие считаться не начнут. В частности если скажем первый блок посчитался быстро - то поток будет простаивать, пока не досчитается второй - а мог бы уже считать третий блок.
Ну и тут вы создаете кучу процессов, это тоже не бесплатно.
В коде
Dmitriy40 потоки создаются сразу, но работа между ними разбивается динамически - как только очередной поток досчитал свой блок, он берется за первый еще не посчитанный. В результате потоки могут простаивать только если все блоки либо уже посчитались, либо считаются.
Например если разбивать на блоки, время подсчета которых распределено равномерно от 1 до 2 секунд, то в вашем подходе на каждую группу мы получаем в среднем
секунд, когда выполняется только один поток. А в правильном это происходит в течении максимум двух секунд за всё время (если последний блок оказался тяжелым и его взяли как раз когда другой поток уже почти досчитал свой блок).