Я в следующей настройке: у меня есть метод, который принимает целевую функцию f в качестве ввода.Подразделением этого метода я хочу оценить f по небольшому набору точек.Поскольку f имеет высокую сложность, я подумал сделать это параллельно.Все онлайн-примеры зависают даже для таких тривиальных функций, как возведение в квадрат на сетах с 5 баллами.Они используют многопроцессорную библиотеку - и я не знаю, что я делаю неправильно.Я не уверен, как инкапсулировать это __name__ == "__main__"
утверждение в моем методе.(поскольку он является частью модуля - я думаю, что вместо "__main__"
мне следует использовать имя модуля?)
Код, который я использовал, выглядит как
from multiprocessing.pool import Pool
from multiprocessing import cpu_count
x = [1,2,3,4,5]
num_cores = cpu_count()
def f(x):
return x**2
if __name__ == "__main__":
pool = Pool(num_cores)
y = list(pool.map(f, x))
pool.join()
print(y)
При выполнении этого кодав моем spyder это занимает чертовски много времени, чтобы закончить.
Итак, мои главные вопросы: Что я делаю не так в этом коде?Как я могу инкапсулировать оператор __name __-, если этот код является частью более крупного метода?Стоит ли даже распараллеливать это?(оценка одной функции может занять несколько минут, а в последовательном режиме это составляет общее время работы часов ...)