Hyper-threading can be good for some types of workload. Intensive numerical computation is not one of them - if you want to crunch a number, you'd better turn off hyper-threading. What hyperthreading does provide one thing - it's a “free context switch” between tasks, but the processor has only so many execution units.
In this case, this can make the situation worse, because the OS cannot know which processes are running on individual kernels (where they will get full performance) and which are on the same kernel, only on different "hyperthreads".
(In fact, I would promise that the Linux kernel can provide control over this, but the Python multiprocessing module will start additional processes that will use the default resource allocation).
Bottomline: Turn off HT if you can - at least you fully utilize 4 cores.
source share