Git Product home page Git Product logo

import-profiler's Introduction

import-profiler

A basic python import profiler to find bottlenecks in import times. While not often a problem, imports can be an issue for applications that need to start quickly, such as CLI tools. The goal of import profiler is to help find the bottlenecks when importing a given package.

Note: starting from python 3.7, the option -X importtime can be used for similar use, and with a better accuracy. See python/cpython#3490

Example

This is Work in Progress. To try it out, write something as follows:

from import_profiler import profile_import

with profile_import() as context:
    # Anything expensive in here
    import requests

# Print cumulative and inline times. The number of + in the 3rd column
# indicates the depth of the stack.
context.print_info()

Output:

  cumtime (ms)    intime (ms)  name
          83              0.5  requests
          55              0.5  +packages.urllib3.contrib
          54.1            0.3  ++
          53.1            0.7  +++connectionpool
           6.3            1.1  ++++logging
           1.4            0.5  +++++collections
           2.7            1.3  +++++threading
           1.4            0.3  ++++++re
           7              0.7  ++++socket
           5.7            5.7  +++++_ssl
           7              0.1  ++++packages.ssl_match_hostname
           6.9            0.1  +++++
           6.8            2.3  ++++++ssl
           3.2            1.5  +++++++textwrap
           1.7            1.6  ++++++++string
          12              0.4  ++++connection
           7.7            1.1  +++++httplib
           2.3            2.3  ++++++urlparse
           4.2            0.2  ++++++mimetools
           3.4            0.3  +++++++tempfile
           2.1            1.4  ++++++++random
           3.6            0.1  +++++util.ssl_
           1.1            1    ++++++url
          16.4            0.2  ++++request
           1.5            1.4  +++++urllib.parse
          14.7            0.2  +++++filepost
           9.1            6    ++++++uuid
           2.9            1.7  +++++++ctypes
           5.4            0.2  ++++++fields
           4.8            1.7  +++++++email.utils
           2.4            0.2  ++++++++email._parseaddr
           2.2            0.7  +++++++++calendar
           1.4            1.4  ++++++++++locale
           1.2            0.4  ++++response
          24.8            0.4  +
           1.8            1.7  ++cgi
           5.4            5.4  ++platform
          15.1            0.1  ++compat
           2.4            0.2  +++json
           1.5            0.5  ++++decoder
           1.6            1.3  +++urllib2
           7.6            6.8  +++cookielib
           3              2.5  +++Cookie
           1.5            0.6  +models
           1              0.1  +api

Missing features

We don't track where imports happen: it would be nice to know where a given import in the profile output happens.

import-profiler's People

Contributors

cournape avatar emilecaron avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.