pythonhosted.org/psutil

двосхищу это, говоря, что я новичок в параллельной обработке. Работаю над тем, чтобы стать лучше, но я не могу найти ответ на мою проблему, которая кажется довольно уникальной.

У меня проблемы с этим фрагментом кода:

from joblib import Parallel
import multiprocessing

n_cores = multiprocessing.cpu_count()
Parallel(n_jobs=n_cores)(delayed(blexon)(gene,genomes) for gene in genes)

'genes' и 'genomes' - это списки строк. В моем списке генов я могу иметь сотни генов. Я использую Parallel для запуска этого процесса на всех этих генах, и это работает! Если вы считаете, что гены работают одновременно как наборы, то для первых нескольких «наборов» я могу использовать все ядра моего компьютера. Однако после нескольких подходов программа использует только одно ядро. Если у меня 12 ядер, 12 генов будут работать одновременно в течение нескольких итераций набора, но в какой-то момент будет работать только один ген.

Я нашел информацию о Parallel, использующем только одно ядро ​​со scipy (которое я использую в этом скрипте), но это странное поведение: он временно использует все ядра перед переключением на использование одного ядра.

Я не уверен, как решить эту проблему. У кого-нибудь есть вход?

Спасибо.

Система: Ubuntu 16.04 LTS Python 3.5.2 joblib 0.9.4

---РЕДАКТИРОВАТЬ---

Вот фрагмент кода, который я использовал, чтобы попытаться решить проблему схожести процессора:

p = psutil.Process(os.getpid())
print(p.cpu_affinity())
p.cpu_affinity(range(multiprocessing.cpu_count()))
print(p.cpu_affinity())

Выход: (Этот компьютер имеет 12 ядер)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

--РЕДАКТИРОВАТЬ--

После просмотра htop во время работы программы (каждая итерация может занять несколько минут), я обнаружил, что количество ядер постепенно уменьшается. Я начал с 12 ядер, и после этого набора, я до 11 ядер, работающих параллельно.

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

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