Saya tidak yakin apakah ini dianggap lebih sebagai masalah OS, tapi saya pikir saya akan bertanya di sini kalau-kalau ada yang memiliki wawasan dari akhir Python.
Saya telah mencoba untuk memparalelkan penggunaan CPU-heavy forloop joblib, tetapi saya menemukan bahwa alih-alih setiap proses pekerja ditugaskan ke inti yang berbeda, saya berakhir dengan semuanya ditugaskan ke inti yang sama dan tidak ada peningkatan kinerja.
Inilah contoh yang sangat sepele ...
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()
... dan inilah yang saya lihat htopsaat skrip ini berjalan:

Saya menjalankan Ubuntu 12.10 (3.5.0-26) pada laptop dengan 4 core. Jelas joblib.Parallelsedang memunculkan proses terpisah untuk pekerja yang berbeda, tetapi apakah ada cara saya bisa membuat proses ini dijalankan pada core yang berbeda?
