Python Profiling with line profiler
line_profiler
is a python package that lets you profile a python app line by line with minimal code modifications.
- Install the tool:
pip3 install line_profiler
- On your code, import the package and add the
@profile
decorator before the methods that you want to profile - Create a script that runs through your code in a loop.
#!/usr/bin/env python3 import numpy as np from line_profiler import profile @profile def matrix_operations(): # Create two large random matrices A = np.random.rand(1000, 1000) B = np.random.rand(1000, 1000) # Perform matrix multiplication C = np.dot(A, B) if __name__ == "__main__": for i in range(100): matrix_operations()
Run the script:
chmod +x script.py reset; kernprof -l -v script.py
Example output:
Wrote profile results to script.py.lprof Timer unit: 1e-06 s Total time: 3.7408 s File: script.py Function: matrix_operations at line 6 Line # Hits Time Per Hit % Time Line Contents ============================================================== 6 @profile 7 def matrix_operations(): 8 # Create two large random matrices 9 100 1061370.6 10613.7 28.4 A = np.random.rand(1000, 1000) 10 100 1140344.9 11403.4 30.5 B = np.random.rand(1000, 1000) 11 12 # Perform matrix multiplication 13 100 1539081.9 15390.8 41.1 C = np.dot(A, B)