django-profiler
django-profiler is util for profiling python code mainly in django projects but can be used also on ordinary python code. It counts sql queries a measures time of code execution. It logs its output via standard python logging library and uses logger profiling. If your profiler name doesn’t contain any empty spaces e.g. Profiler(‘Profiler1’) django-profiler will log all the output to the profiling.Profiler logger.
Requirements
python 2.7+
Installation
Install via pip or copy this module into your project or into your PYTHON_PATH.
Configuration
django settings.py constants
PROFILING_LOGGER_NAME PROFILING_SQL_QUERIES
It is possible to change default django-profiler logger name by defining PROFILING_LOGGER_NAME = ‘logger_name’ in your django settings.py.
To log also sql queries into profiler logger set PROFILING_SQL_QUERIES to True in your django settings.py module.
Examples
Example 1
Using context manager approach. Output will be logged to profiling logger.
from profiling import Profiler
with Profiler('Complex Computation'):
# code with some complex computations
Example 2
Using context manager approach. Output will be logged to profiling.Computation logger.
from profiling import Profiler
with Profiler('Computation'):
# code with some complex computations
Example 3
Using standard approach. Output will be logged to profiling logger.
from profiling import Profiler
profiler = Profiler('Complex Computation')
profiler.start()
# code with some complex computations
profiler.stop()
Example 4
Using standard approach and starting directly in constructor. Output will be logged to profiling logger.
from profiling import Profiler
profiler = Profiler('Complex Computation', start=True)
# code with some complex computations
profiler.stop()
Example 5
Using decorator approach. Output will be logged to profiling.complex_computations logger.
from profiling import profile
@profile
def complex_computations():
#some complex computations
Example 6
Using decorator approach. Output will be logged to profiling.ComplexClass.complex_computations logger.
from profiling import profile
class ComplexClass(object):
@profile
def complex_computations():
#some complex computations
Example 7
Using decorator approach. Output will be logged to profiling.complex_computations logger. profile execution stats are logged to profiling.complex_computations logger.
from profiling import profile
@profile(stats=True)
def complex_computations():
#some complex computations
Example 8
Using decorator approach. Output will be logged to profiling.complex_computations logger. profile execution stats are printed to sys.stdout.
import sys
from profiling import profile
@profile(stats=True, stats_buffer=sys.stdout)
def complex_computations():
#some complex computations
Example 9
Using decorator approach. Output will be logged to profiling.ComplexClass.complex_computations logger. profile stats will be logged to profiling.ComplexClass.complex_computations.
from profiling import profile
class ComplexClass(object)
@profile(stats=True)
def complex_computations():
#some complex computations
Tests
Tested on evnironment
Xubuntu Linux 11.10 oneiric 64-bit
python 2.7.2+
python unittest
Running tests
To run the test run command:
$ python test.py $ python setup.py test
References
Metadata
Release files for django-profiler 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django-profiler-2.0.0.tar.gz | 6.1 kB | Details |
Release files / django-profiler-2.0.0.tar.gz
| Download URL | django-profiler-2.0.0.tar.gz |
|---|---|
| Size | 6.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ee5e5619521f1ce896753716f0eda947c402850450577a3a1e9b7204d9cbcf20
|
|
BLAKE2b-256 checksum How to use checksums |
6bc16a85b662c6812b3d51bd70d0624159ca80dd7085415e5080996c328833d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |