Skip main navigation

Profiling Cython

By default, Cython code does not show up when using cProfile. In this article we discuss how to enable profiling for Cython code.
© CC-BY-NC-SA 4.0 by CSC - IT Center for Science

As the first rule of optimization is to measure performance before starting any optimization work, one should have made profile of the pure Python code before starting any Cythonization. However, in the next optimization cycle one should profile also the Cython code.

By default, Cython code does not show up in the measurements of cProfile. One can, however, enable profiling either for the whole module or for individual functions. In order to enable profiling for the whole function, simply include a global directive at the top of a file:

# cython: profile=True

import numpy as np

def myfunc():
...

In order to enable profiling for a single function, one can include the
cython decorator before a function definition:

cimport cython

@cython.profile(True)
def my_func():
...

As profiling adds always some overhead, small functions that are called very
frequently can mess up the profile. In these cases one can use the decorator
for disabling profiling for some functions (if profiling is enabled for the
whole module).

# cython: profile=True
cimport cython

@cython.profile(False)
def my_func_not_to_profile():
...
© CC-BY-NC-SA 4.0 by CSC - IT Center for Science
This article is from the free online

Python in High Performance Computing

Created by
FutureLearn - Learning For Life

Our purpose is to transform access to education.

We offer a diverse selection of courses from leading universities and cultural institutions from around the world. These are delivered one step at a time, and are accessible on mobile, tablet and desktop, so you can fit learning around your life.

We believe learning should be an enjoyable, social experience, so our courses offer the opportunity to discuss what you’re learning with others as you go, helping you make fresh discoveries and form new ideas.
You can unlock new opportunities with unlimited access to hundreds of online short courses for a year by subscribing to our Unlimited package. Build your knowledge with top universities and organisations.

Learn more about how FutureLearn is transforming access to education