Performance Profiling & Optimisation with Python