Skip to main content

Show how long each Python import takes during startup

Project description

philiprehberger-import-profiler

Tests PyPI version Last updated

Show how long each Python import takes during startup.

Installation

pip install philiprehberger-import-profiler

Usage

Basic Profiling

from philiprehberger_import_profiler import profile_imports

report = profile_imports("my_package")

# Slowest imports
for entry in report.slowest(10):
    print(f"{entry.name}: {entry.duration_ms:.1f}ms")

# Tree view
report.print_tree(threshold_ms=5.0)
# └── my_package (124.5ms)
#     ├── requests (45.2ms)
#     │   └── urllib3 (22.1ms)
#     └── numpy (62.0ms)

# Summary
print(f"Total: {report.total_ms:.1f}ms, Modules: {report.module_count}")

Self Time and Export

report = profile_imports("my_package")

# Self time excludes children's duration
for entry in report.slowest(5):
    print(f"{entry.name}: total={entry.duration_ms:.1f}ms self={entry.self_ms:.1f}ms")

# Export as list of dicts
data = report.to_dict()
# [{"name": "requests", "duration_ms": 45.2, "self_ms": 23.1, "parent": "my_package"}, ...]

API

Function / Class Description
profile_imports(module_name) Profile all imports, returns ImportReport
report.slowest(n) Top N slowest imports as ImportEntry list
report.print_tree(threshold_ms=0) Print indented tree
report.total_ms Total import time in milliseconds
report.module_count Number of modules imported
report.to_dict() Export as list of dicts
ImportEntry.name Module name
ImportEntry.duration_ms Total duration including children
ImportEntry.self_ms Duration excluding children

Development

pip install -e .
python -m pytest tests/ -v

Support

If you find this project useful:

Star the repo

🐛 Report issues

💡 Suggest features

❤️ Sponsor development

🌐 All Open Source Projects

💻 GitHub Profile

🔗 LinkedIn Profile

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

philiprehberger_import_profiler-0.1.9.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file philiprehberger_import_profiler-0.1.9.tar.gz.

File metadata

File hashes

Hashes for philiprehberger_import_profiler-0.1.9.tar.gz
Algorithm Hash digest
SHA256 9dfce78e83d2aef5bcd8a6ad49e5f1543ce9fc0442cdefee800fc2226c4d258e
MD5 ef605e023f216224f81268c74cb2535c
BLAKE2b-256 fa7248ca2b0a8b54956d277c19ad9e54976a53183aa60ba0dfad00e81abcb0d2

See more details on using hashes here.

File details

Details for the file philiprehberger_import_profiler-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for philiprehberger_import_profiler-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 934eacd1e48844e7d3053b8bcc8decc1a0528c05e1ea01773266d632c90ae87a
MD5 cee35c1b1f3d3bccdccfc8ca40e35446
BLAKE2b-256 2fd89d7c37172eaf6b8cc08b59e8b964d7572f169a0ba82983c92a1f618fe867

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page