почему numpy.mean не многопоточный?

Я искал способы легко многопоточности моего простого кода анализа, так как я заметил, что numpy использует только одно ядро, несмотря на то, что он должен быть многопоточным.

Я знаю, что numpy сконфигурирован для нескольких ядер, так как я вижу тесты, использующие numpy.dot, использующие все мои ядра, поэтому я просто переопределил Mean как точечный продукт, и он работает намного быстрее. Есть ли какая-то причина, по которой он не может так быстро бегать? Я нахожу подобное поведение для больших массивов, хотя отношение близко к 2, чем 3, показанные в моем примере.

Я читал кучу постов о подобных проблемах со скоростью, и, видимо, все гораздо сложнее, чем я думал. Любое понимание было бы полезно, я бы предпочел просто использовать среднее значение, так как оно более читабельно и меньше кода, но я мог бы переключиться на средние точки.

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])

Ответы на вопрос(2)

Ваш ответ на вопрос