Количество потоков в процессе Python не совпадает с количеством рабочих потоков, потому что есть некоторые потоки, используемые для других операций, не требующих большой загрузки процессора, таких как взаимодействие с другими процессами, диагностика и обслуживание приборная доска. В других процессах, например, в том, где живет ваш клиент, могут происходить разные вещи (для меня в чистом сеансе ipython есть 3 потока).
что может мешать достижению 100% вычислительных ресурсов
Многое! Обращаясь к рекомендациям , вы должны убедиться, что ваши разделы достаточно велики, чтобы вычисления на них занимали намного больше времени, чем накладные расходы для каждой задачи, но не настолько велики, чтобы они насыщали память. В конце вы делаете .compute()
, после чего все оставшиеся данные передаются одному процессу (клиенту), что может стать основным узким местом, если вы не агрегировали по большому коэффициенту. Часто требуется, чтобы такой метод, как .to_textfiles
, записывал рабочие, а не накапливал в клиентском процессе.
core i7 имеет только два ядра, но в общей сложности 8 гиперпоточностей
Не четыре ядра ?? Обратите внимание, что ОС обычно не делает различий между логическими ядрами, физическими ядрами и дискретными процессорами. Python просто берет информацию из ОС.