86. Performance Profiling with cProfile

Performance profiling in Python can help identify slow sections of code and improve overall performance. The cProfile module is a built-in tool for profiling Python programs, providing valuable insight into the execution time of different functions or methods.

Here are 10 Python code snippets demonstrating how to use cProfile to profile code and identify performance bottlenecks:

1. Basic Profiling with cProfile

Copy

import cProfile

def slow_function():
    total = 0
    for i in range(1000000):
        total += i
    return total

# Profile the slow function
cProfile.run('slow_function()')

This is the simplest usage of cProfile. It runs the function slow_function and outputs a profile of how long each part of the code took to execute.


2. Profiling Multiple Functions

Copy

import cProfile

def function_a():
    total = 0
    for i in range(500000):
        total += i
    return total

def function_b():
    total = 0
    for i in range(1000000):
        total += i
    return total

# Profile both functions
cProfile.run('function_a()')
cProfile.run('function_b()')

This example profiles two functions separately to observe their individual performance.


3. Profiling Code in a Script

Copy

You can use cProfile.run() to profile the main execution of a script.


4. Saving Profile Data to a File

Copy

This code saves the profiling data to a file named profile_data.prof for further inspection.


5. Viewing Profiling Results with pstats

Copy

This snippet loads the profiling data from a file and sorts the output by cumulative time. The print_stats(10) method prints the top 10 functions by cumulative time.


6. Profiling with the time Method for Comparison

Copy

This code compares cProfile output with a simple manual timing approach using time.time().


7. Profiling Code with a Decorator

Copy

This example defines a custom decorator profile_function to profile the execution of any function it wraps.


8. Profiling Using a Context Manager

Copy

Here, the context manager profile_context is used to start and stop profiling for a specific block of code.


9. Profiling External Libraries

Copy

This example demonstrates profiling a function that includes an external library (in this case, time.sleep).


10. Profiling with runctx for Code with Context

Copy

This snippet demonstrates profiling code within a specific namespace using cProfile.runctx().


Last updated