J'ai une boucle que j'ai essayé d'accélérer. J'ai remarqué que Python n'utilisait qu'un seul cœur, j'ai donc importé le paquet multi-traitement et mis en place un pool. Maintenant, tout le processus est réparti sur un certain nombre de noyaux, mais ils semblent être limités à ~ 10%.Multiprocesseur Python limitant à 10% par cœur?
Est-ce prévu/optimal? Ou est-il un moyen d'utiliser un plus de chaque noyau?
code:
from multiprocessing.dummy import Pool as ThreadPool
//...more code here...
pool = ThreadPool(os.cpu_count())
pool.starmap(getSubject, zip(range(1, Nsub)))
pool.close()
pool.join()
ps. Avant d'utiliser Pool
htop montrerait un noyau à 100% et les autres à ~ 0%.