Зависит от того, как именно вы собираетесь его использовать.Наиболее общий подход заключается в том, чтобы следовать пути модуля stdlib 'profile' и, следовательно, иметь контроль над каждым вызовом, но он несколько медленный.
Если вы знаете, какие модули нужно отслеживать, прежде чем дать им контроль, я бы пошелс перебором всех их членов и упаковкой с отслеживающим декоратором.Таким образом, отслеживаемый код остается чистым, и для его реализации не требуется много кода.