У меня есть программа, которая требует многопроцессорной обработки. Функция, которую она вызывает, будет автоматически использовать каждое доступное ядро. Однако это как-то вызывает проблему, поскольку каждое ядро используется для каждого из процессов, а это означает, что каждое ядро имеет нагрузку 100 * x%, где x - количество порожденных процессов. Таким образом, для 6 процессов каждая рана используется на 600%.
Код довольно прост и использует обычный:
pool = Pool(processes=6)
for i in pool.imap_unordered(main_program, range(100)):
print('Task in pool has finished')
Это, однако, приведет к загрузке каждого ядра на 600% и будет медленнее, чем каждый процесс в отдельности. Я предполагаю, что я использую модуль mp неправильно, но я не могу понять, где.
Примечание. Мое идеальное решение - ограничить основную функцию использованием только одного ядра, однако эта функция не мое, а скорее приложение, которое я вызываю, и я не знаю, где ограничить это в исходном коде.
Есть предложения?
Большое спасибо