Summary and Setup

Welcome to Python Optimisation and Performance Profiling Training!

The training curriculum for this course is designed for researchers that are writing Python and lack formal computer science training. The curriculum covers how to assess where time is being spent during execution of a Python program, it also provides a high level understanding of how code executes and how this maps to the limiting factors of performance and good practice.

If you are now comfortable using Python, this course may be of interest to supplement and advance your programming knowledge. This course is particularly relevant if you are writing from scratch or re-using and existing research code and would desire a greater confidence that your code is both performant and suitable for publication. This is an all-day course, however it normally finishes by early afternoon.

If you would like to register to take the course, check the registration information.

Learning Objectives


After attending this training, participants will be able to:

  • recognise and implement optimisations for common limiting factors of performance.
  • identify the most expensive functions and lines of code using cprofile and line_profiler.
  • evaluate code to determine the limiting factors of its performance.

Prerequisites

Before joining Python Optimisation and Performance Profiling Training, participants should be able to:

  • implement basic algorithms in Python.
  • follow the control flow of Python code, and dry run the execution in their head or on paper.

See the Python novice carpentry for another course to help with learning these skills.

Software Setup


Details

This course uses Python and was developed using Python 3.11, therefore it is recommended that you have a Python 3.11 or newer environment.

You may want to create a new Python virtual environment for the course, this can be done with your preferred Python environment manager (e.g. conda, pipenv), the required packages can all be installed via pip.

To create a new Anaconda environment named py311_env with Python 3.11, use the following command for conda:

BASH

     conda create --name py311_env python=3.11
     conda activate py311_env

The non-core Python packages required by the course are pytest, snakeviz, line_profiler, numpy, pandas and matplotlib which can be installed via pip.

SH

pip install pytest snakeviz line_profiler[all] numpy pandas matplotlib

To complete some of the exercises you will need to use a text-editor or Python IDE, so make sure you have your favourite available.

If you are unable to install line_profiler via pip on MacOS. Instead it can be installed via conda.

SH

conda install line_profiler

It may first be necessary to enable conda-forge.

SH

conda config --add channels conda-forge