Расширение Fortran для Python через f2py: как профилировать?

Я использую расширение для Python (2.7.2), написанное в Fortran (gfortran 4.4.7), скомпилированное через f2py (версия 2).

Я могу профилировать часть Python с помощью cProfile , но результат не дает никакой информации о функциях Fortran. Вместо этого время приписывается функции Python, вызывающей функцию Fortran.

Я включил флаги «-pg -O» для всех объектов Fortran, которые я строю, а также в вызове f2py, создающем общий объект через: f2py --opt="-pg -O"

Любой намек на то, как получить информацию о Фортране, также высоко оценен.

Если кто-то использует подобную настройку, с другим профилировщиком, мне также будет интересно.

3 Solutions collect form web for “Расширение Fortran для Python через f2py: как профилировать?”

Вызов функции Fortran отображается как:

 <ipython-input-51-f4bf36c6a947>:84(<module>). 

Я знаю, вы не можете определить, какой модуль вызывается, но по крайней мере это дает вам представление.

Другой способ заключается в его переносе в функцию Python, а затем просмотр времени для функции Python.

Посмотрите на профайлер расширения python yep .

Этот рабочий процесс работает очень хорошо:

    1. Используйте callgrind для профайла вашего кода (генерирует такой файл, как callgrind.out.27237):

valgrind –tool = callgrind python my_python_script_calling_f2py_functions.py arg1 arg2

    1. Преобразовать в .dot файл (при необходимости вы можете установить gprof2dot с: "pip install git + https://github.com/jrfonseca/gprof2dot ")

gprof2dot -f callgrind callgrind.out.27237> callgrind.dot

    1. Создайте график с помощью Graphviz (см. Этот вопрос в стеке ) Интерпретация данных callgrind :

dot -Tjpg callgrind.dot -o callgrind.jpg

 
Interesting Posts for Van-Lav

В чем разница между select_related и prefetch_related в Django ORM?

Разделить строки с несколькими разделителями?

Как обрабатывать огромные текстовые файлы, содержащие символы EOF / Ctrl-Z, используя Python в Windows?

Анализ параметров URL-словаря в Python

Стилизация части этикетки в легенде в matplotlib

Как повторить элементы массива вдоль двух осей?

нужна эквивалентная команда python для p4 описать

Почему я не могу читать из stdin в этом разветвленном процессе?

Python, как индексировать многомерный массив со строковым ключом, например, dict

Регрессия PyMC многих регрессий?

Как получить доступ к профилю пользователя в шаблоне Django?

серьезно простой прокси-сервер python HTTP?

Как создать программу, которая использует графический интерфейс?

Как оживить упорядоченную по времени последовательность графиков matplotlib

Как разрешить «table» auth_permission «уже существует», когда база данных делится между двумя проектами Django

Python - лучший язык программирования в мире.