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