У меня есть передний конец python и задний конец fortran, используя F2py для вызова функции-оболочки python «gBulk_kZ» для функции fortran. Я сравнивал время двух методов. Первый - с многопроцессорной обработкой, второй - с использованием функции отображения. Запуск многопроцессорной обработки всего одного процессора дает ускорение x100. Если оставить выбор процессора пустым, он будет работать примерно в 14,0 мс. Почему многопроцессорность намного быстрее, чем просто карта в случае, когда я использую только один процессор?Аномальная скорость F2py с muliprocessing
Метод 1: время = 6.9ms
pool = multiprocessing.Pool(1)
g = partial(gBulk_kZ,m,n,s_lat)
glist = pool.map(g,Elist)
pool.close()
pool.join()
Способ 2: Время = 690.4ms
g = partial(gBulk_kZ,m,n,s_lat)
glist = map(g,Elist)
И тогда они оба выписывают таким же образом.
Что делает подпрограмма Fortran? –
Подпрограмма fortran вычисляет интеграл по функции, которая имеет вид (e^(i (f (x) + x)))/(cos (x) sin (f (x))) где f (x) является сложной функцией acos. – egoburnswell
Вы подтвердили правильность результатов в обоих случаях? –