2014-09-26 3 views
0

У меня есть передний конец 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) 

И тогда они оба выписывают таким же образом.

+0

Что делает подпрограмма Fortran? –

+0

Подпрограмма fortran вычисляет интеграл по функции, которая имеет вид (e^(i (f (x) + x)))/(cos (x) sin (f (x))) где f (x) является сложной функцией acos. – egoburnswell

+0

Вы подтвердили правильность результатов в обоих случаях? –

ответ

0

Теперь я могу ответить на свой вопрос. Я использовал time.clock() для измерения времени. По какой-то причине это не работает. time.time() дает ожидаемый ответ. Мой плохой.

 Смежные вопросы

  • Нет связанных вопросов^_^