por que não é numpy.mean multithreaded?

Eu tenho procurado maneiras de facilmente multithread alguns dos meus códigos de análise simples desde que eu tinha notado numpy que estava usando apenas um núcleo, apesar do fato de que ele deveria ser multithreaded.

Eu sei que numpy está configurado para múltiplos núcleos, desde que eu possa ver testes usando numpy.dot use todos os meus núcleos, então eu apenas reimplemento significa como um produto de ponto, e ele corre muito mais rápido. Existe alguma razão que significa que não pode correr tão rápido por conta própria? Eu acho um comportamento similar para matrizes maiores, embora a proporção seja próxima de 2 do que as 3 mostradas no meu exemplo.

Eu tenho lido um monte de posts sobre problemas semelhantes de velocidade, e aparentemente é mais complicado do que eu pensava. Qualquer insight seria útil, eu prefiro apenas usar média, pois é mais legível e menos código, mas eu poderia mudar para meios baseados em pontos.

In [27]: data = numpy.random.rand(10,10)

In [28]: a = numpy.ones(10)

In [29]: %timeit numpy.dot(data,a)/10.0
100000 loops, best of 3: 4.8 us per loop

In [30]: %timeit numpy.mean(data,axis=1)
100000 loops, best of 3: 14.8 us per loop

In [31]: numpy.dot(data,a)/10.0 - numpy.mean(data,axis=1)
Out[31]: 
array([  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
         0.00000000e+00,   1.11022302e-16,   0.00000000e+00,
         0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
        -1.11022302e-16])

questionAnswers(2)

yourAnswerToTheQuestion