Почему мультипроцессор использует только одно ядро после импорта numpy?

Я не уверен, считается ли это больше проблемой ОС, но я подумал, что могу спросить здесь, если у кого-то есть понимание с конца Python.

Я пытался распараллелить процессорfor использование циклаjoblib, но я обнаружил, что вместо того, чтобы каждый рабочий процесс был назначен на отдельное ядро, я получаю, что все они были назначены на одно и то же ядро, и никакого повышения производительности

Вот очень тривиальный пример ...

from joblib import Parallel,delayed
import numpy as np

def testfunc(data):
    # some very boneheaded CPU work
    for nn in xrange(1000):
        for ii in data[0,:]:
            for jj in data[1,:]:
                ii*jj

def run(niter=10):
    data = (np.random.randn(2,100) for ii in xrange(niter))
    pool = Parallel(n_jobs=-1,verbose=1,pre_dispatch='all')
    results = pool(delayed(testfunc)(dd) for dd in data)

if __name__ == '__main__':
    run()

... и вот что я вижу вhtop пока этот скрипт работает:

Я использую Ubuntu 12.10 (3.5.0-26) на ноутбуке с 4 ядрами. очевидноjoblib.Parallel порождает ли отдельные процессы для разных работников, но есть ли способ заставить эти процессы выполняться на разных ядрах?

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

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