profilehooks | Python decorators | Monitoring library
kandi X-RAY | profilehooks Summary
kandi X-RAY | profilehooks Summary
Python decorators for profiling/tracing/timing a single function
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- Print out the traceback
- Count the number of blank lines in the source code
- Mark the source at a given line number
- Identify function name
- Find source line number of source lines
- Return a set of docstrings from a file
- Print out the program exit
- Prints profiling statistics
- Prints a message to stdout
- Read file contents
profilehooks Key Features
profilehooks Examples and Code Snippets
Community Discussions
Trending Discussions on profilehooks
QUESTION
I have a script that seemed to run slow and that i profiled using cProfile (and visualisation tool KCacheGrind)
It seems that what is taking almost 90% of the runtime is the import sequence, and especially the running of the _ _ init _ _.py
files...
Here a screenshot of the KCacheGrind output (sorry for attaching an image...)
I am not very familiar with how the import sequence works in python ,so maybe i got something confused... I also placed _ _ init _ _.py
files in everyone of my custom made packages, not sure if that was what i should have done.
Anyway, if anyone has any hint, greatly appreciated!
EDIT: additional picture when function are sorted by self:
EDIT2:
here the code attached, for more clarity for the answerers:
...ANSWER
Answered 2018-May-27 at 17:27No. You are conflating cumulative time with time spent in the top-level code of the __init__.py
file itself. The top-level code calls other methods, and those together take a lot of time.
Look at the self column instead to find where all that time is being spent. Also see What is the difference between tottime and cumtime in a python script profiled with cProfile?, the incl. column is the cumulative time, self is the total time.
I'd just filter out all the entries; the Python project has already made sure those paths are optimised.
However, your second screenshot does show that in your profiling run, all that your Python code busied itself with was loading bytecode for modules to import (the marshal
module provides the Python bytecode serialisation implementation). Either the Python program did nothing but import modules and no other work was done, or it is using some form of dynamic import that is loading a large number of modules or is otherwise ignoring the normal module caches and reloading the same module(s) repeatedly.
You can profile import times using Python 3.7's new -X importtime
command-line switch, or you could use a dedicated import-profiler to find out why imports take such a long time.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install profilehooks
You can use profilehooks like any standard Python library. You will need to make sure that you have a development environment consisting of a Python distribution including header files, a compiler, pip, and git installed. Make sure that your pip, setuptools, and wheel are up to date. When using pip it is generally recommended to install packages in a virtual environment to avoid changes to the system.
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page