To profile Python code line by line, we can use line_profiler1.

How to install


Use pip to install this package:

pip install line_profiler


It is easier to install using conda, since it does not require building the package from source:

# if you use pip on Windows, you must have Visual Studio to build the package.
conda install line_profiler

How to profile?

Line profiler has a command line execute named kernprof. Annotate the function we want to profile with @profile annotation. Then run the following command on the command line:

kernprof -v -l -u 1e-3

By default, kernprof will only generate the profile result file, but do not print the result. The name of result file is the original Python script name suffixed with lprof. To check the profile result, we need to run line_profiler again:

python -m line_profiler

The -v option tells kernprof to show the profile result. The -l option will print the profile time for each line for the given function. The -u option specify the unit of measure, which is 1e-6 seconds by default.

The command line options to can be followed after it. Just like you call python


  1. This is a fork of original line_profiler repo. The original repo is not maintained any more. ↩︎