Skip to main content

Line-by-line profiler

Project description

Pypi ReadTheDocs Downloads CircleCI GithubActions Codecov

This is the official line_profiler repository. The most recent version of line-profiler on pypi points to this repo. The original line_profiler package by @rkern is unmaintained. This fork is the official continuation of the project.

Github

https://github.com/pyutils/line_profiler

Pypi

https://pypi.org/project/line_profiler

ReadTheDocs

https://kernprof.readthedocs.io/en/latest/


line_profiler is a module for doing line-by-line profiling of functions. kernprof is a convenient script for running either line_profiler or the Python standard library’s cProfile or profile modules, depending on what is available.

They are available under a BSD license.

Quick Start

To profile a python script:

  • Install line_profiler: pip install line_profiler.

  • Decorate function(s) you want to profile with @profile. The decorator will be made automatically available on run.

  • Run kernprof -lv script_to_profile.py.

Installation

Releases of line_profiler can be installed using pip:

$ pip install line_profiler

Installation while ensuring a compatible IPython version can also be installed using pip:

$ pip install line_profiler[ipython]

To check out the development sources, you can use Git:

$ git clone https://github.com/pyutils/line_profiler.git

You may also download source tarballs of any snapshot from that URL.

Source releases will require a C compiler in order to build line_profiler. In addition, git checkouts will also require Cython. Source releases on PyPI should contain the pregenerated C sources, so Cython should not be required in that case.

kernprof is a single-file pure Python script and does not require a compiler. If you wish to use it to run cProfile and not line-by-line profiling, you may copy it to a directory on your PATH manually and avoid trying to build any C extensions.

As of 2021-06-04 Linux (x86_64 and i686), OSX (10_9_x86_64), and Win32 (win32, and amd64) binaries are available on pypi.

The last version of line profiler to support Python 2.7 was 3.1.0 and the last version to support Python 3.5 was 3.3.1.

line_profiler

The current profiling tools supported in Python only time function calls. This is a good first step for locating hotspots in one’s program and is frequently all one needs to do to optimize the program. However, sometimes the cause of the hotspot is actually a single line in the function, and that line may not be obvious from just reading the source code. These cases are particularly frequent in scientific computing. Functions tend to be larger (sometimes because of legitimate algorithmic complexity, sometimes because the programmer is still trying to write FORTRAN code), and a single statement without function calls can trigger lots of computation when using libraries like numpy. cProfile only times explicit function calls, not special methods called because of syntax. Consequently, a relatively slow numpy operation on large arrays like this,

a[large_index_array] = some_other_large_array

is a hotspot that never gets broken out by cProfile because there is no explicit function call in that statement.

LineProfiler can be given functions to profile, and it will time the execution of each individual line inside those functions. In a typical workflow, one only cares about line timings of a few functions because wading through the results of timing every single line of code would be overwhelming. However, LineProfiler does need to be explicitly told what functions to profile. The easiest way to get started is to use the kernprof script.

$ kernprof -l script_to_profile.py

kernprof will create an instance of LineProfiler and insert it into the __builtins__ namespace with the name profile. It has been written to be used as a decorator, so in your script, you decorate the functions you want to profile with @profile.

@profile
def slow_function(a, b, c):
    ...

The default behavior of kernprof is to put the results into a binary file script_to_profile.py.lprof . You can tell kernprof to immediately view the formatted results at the terminal with the [-v/–view] option. Otherwise, you can view the results later like so:

$ python -m line_profiler script_to_profile.py.lprof

For example, here are the results of profiling a single function from a decorated version of the pystone.py benchmark (the first two lines are output from pystone.py, not kernprof):

Pystone(1.1) time for 50000 passes = 2.48
This machine benchmarks at 20161.3 pystones/second
Wrote profile results to pystone.py.lprof
Timer unit: 1e-06 s

File: pystone.py
Function: Proc2 at line 149
Total time: 0.606656 s

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
   149                                           @profile
   150                                           def Proc2(IntParIO):
   151     50000        82003      1.6     13.5      IntLoc = IntParIO + 10
   152     50000        63162      1.3     10.4      while 1:
   153     50000        69065      1.4     11.4          if Char1Glob == 'A':
   154     50000        66354      1.3     10.9              IntLoc = IntLoc - 1
   155     50000        67263      1.3     11.1              IntParIO = IntLoc - IntGlob
   156     50000        65494      1.3     10.8              EnumLoc = Ident1
   157     50000        68001      1.4     11.2          if EnumLoc == Ident1:
   158     50000        63739      1.3     10.5              break
   159     50000        61575      1.2     10.1      return IntParIO

The source code of the function is printed with the timing information for each line. There are six columns of information.

  • Line #: The line number in the file.

  • Hits: The number of times that line was executed.

  • Time: The total amount of time spent executing the line in the timer’s units. In the header information before the tables, you will see a line “Timer unit:” giving the conversion factor to seconds. It may be different on different systems.

  • Per Hit: The average amount of time spent executing the line once in the timer’s units.

  • % Time: The percentage of time spent on that line relative to the total amount of recorded time spent in the function.

  • Line Contents: The actual source code. Note that this is always read from disk when the formatted results are viewed, not when the code was executed. If you have edited the file in the meantime, the lines will not match up, and the formatter may not even be able to locate the function for display.

If you are using IPython, there is an implementation of an %lprun magic command which will let you specify functions to profile and a statement to execute. It will also add its LineProfiler instance into the __builtins__, but typically, you would not use it like that.

For IPython 0.11+, you can install it by editing the IPython configuration file ~/.ipython/profile_default/ipython_config.py to add the 'line_profiler' item to the extensions list:

c.TerminalIPythonApp.extensions = [
    'line_profiler',
]

Or explicitly call:

%load_ext line_profiler

To get usage help for %lprun, use the standard IPython help mechanism:

In [1]: %lprun?

These two methods are expected to be the most frequent user-level ways of using LineProfiler and will usually be the easiest. However, if you are building other tools with LineProfiler, you will need to use the API. There are two ways to inform LineProfiler of functions to profile: you can pass them as arguments to the constructor or use the add_function(f) method after instantiation.

profile = LineProfiler(f, g)
profile.add_function(h)

LineProfiler has the same run(), runctx(), and runcall() methods as cProfile.Profile as well as enable() and disable(). It should be noted, though, that enable() and disable() are not entirely safe when nested. Nesting is common when using LineProfiler as a decorator. In order to support nesting, use enable_by_count() and disable_by_count(). These functions will increment and decrement a counter and only actually enable or disable the profiler when the count transitions from or to 0.

After profiling, the dump_stats(filename) method will pickle the results out to the given file. print_stats([stream]) will print the formatted results to sys.stdout or whatever stream you specify. get_stats() will return LineStats object, which just holds two attributes: a dictionary containing the results and the timer unit.

kernprof

kernprof also works with cProfile, its third-party incarnation lsprof, or the pure-Python profile module depending on what is available. It has a few main features:

  • Encapsulation of profiling concerns. You do not have to modify your script in order to initiate profiling and save the results. Unless if you want to use the advanced __builtins__ features, of course.

  • Robust script execution. Many scripts require things like __name__, __file__, and sys.path to be set relative to it. A naive approach at encapsulation would just use execfile(), but many scripts which rely on that information will fail. kernprof will set those variables correctly before executing the script.

  • Easy executable location. If you are profiling an application installed on your PATH, you can just give the name of the executable. If kernprof does not find the given script in the current directory, it will search your PATH for it.

  • Inserting the profiler into __builtins__. Sometimes, you just want to profile a small part of your code. With the [-b/–builtin] argument, the Profiler will be instantiated and inserted into your __builtins__ with the name “profile”. Like LineProfiler, it may be used as a decorator, or enabled/disabled with enable_by_count() and disable_by_count(), or even as a context manager with the “with profile:” statement.

  • Pre-profiling setup. With the [-s/–setup] option, you can provide a script which will be executed without profiling before executing the main script. This is typically useful for cases where imports of large libraries like wxPython or VTK are interfering with your results. If you can modify your source code, the __builtins__ approach may be easier.

The results of profile script_to_profile.py will be written to script_to_profile.py.prof by default. It will be a typical marshalled file that can be read with pstats.Stats(). They may be interactively viewed with the command:

$ python -m pstats script_to_profile.py.prof

Such files may also be viewed with graphical tools. A list of 3rd party tools built on cProfile or line_profiler are as follows:

Frequently Asked Questions

  • Why the name “kernprof”?

    I didn’t manage to come up with a meaningful name, so I named it after myself.

  • The line-by-line timings don’t add up when one profiled function calls another. What’s up with that?

    Let’s say you have function F() calling function G(), and you are using LineProfiler on both. The total time reported for G() is less than the time reported on the line in F() that calls G(). The reason is that I’m being reasonably clever (and possibly too clever) in recording the times. Basically, I try to prevent recording the time spent inside LineProfiler doing all of the bookkeeping for each line. Each time Python’s tracing facility issues a line event (which happens just before a line actually gets executed), LineProfiler will find two timestamps, one at the beginning before it does anything (t_begin) and one as close to the end as possible (t_end). Almost all of the overhead of LineProfiler’s data structures happens in between these two times.

    When a line event comes in, LineProfiler finds the function it belongs to. If it’s the first line in the function, we record the line number and t_end associated with the function. The next time we see a line event belonging to that function, we take t_begin of the new event and subtract the old t_end from it to find the amount of time spent in the old line. Then we record the new t_end as the active line for this function. This way, we are removing most of LineProfiler’s overhead from the results. Well almost. When one profiled function F calls another profiled function G, the line in F that calls G basically records the total time spent executing the line, which includes the time spent inside the profiler while inside G.

    The first time this question was asked, the questioner had the G() function call as part of a larger expression, and he wanted to try to estimate how much time was being spent in the function as opposed to the rest of the expression. My response was that, even if I could remove the effect, it might still be misleading. G() might be called elsewhere, not just from the relevant line in F(). The workaround would be to modify the code to split it up into two lines, one which just assigns the result of G() to a temporary variable and the other with the rest of the expression.

    I am open to suggestions on how to make this more robust. Or simple admonitions against trying to be clever.

  • Why do my list comprehensions have so many hits when I use the LineProfiler?

    LineProfiler records the line with the list comprehension once for each iteration of the list comprehension.

  • Why is kernprof distributed with line_profiler? It works with just cProfile, right?

    Partly because kernprof.py is essential to using line_profiler effectively, but mostly because I’m lazy and don’t want to maintain the overhead of two projects for modules as small as these. However, kernprof.py is a standalone, pure Python script that can be used to do function profiling with just the Python standard library. You may grab it and install it by itself without line_profiler.

  • Do I need a C compiler to build line_profiler? kernprof.py?

    You do need a C compiler for line_profiler. kernprof.py is a pure Python script and can be installed separately, though.

  • Do I need Cython to build line_profiler?

    Wheels for supported versions of Python are available on PyPI and support linux, osx, and windows for x86-64 architectures. Linux additionally ships with i686 wheels for manylinux and musllinux. If you have a different CPU architecture, or an unsupported Python version, then you will need to build from source.

  • What version of Python do I need?

    Both line_profiler and kernprof have been tested with Python 3.6-3.11. Older versions of line_profiler support older versions of Python.

To Do

cProfile uses a neat “rotating trees” data structure to minimize the overhead of looking up and recording entries. LineProfiler uses Python dictionaries and extension objects thanks to Cython. This mostly started out as a prototype that I wanted to play with as quickly as possible, so I passed on stealing the rotating trees for now. As usual, I got it working, and it seems to have acceptable performance, so I am much less motivated to use a different strategy now. Maybe later. Contributions accepted!

Bugs and Such

Bugs and pull requested can be submitted on GitHub.

Changes

See CHANGELOG.

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

line_profiler-4.1.1.tar.gz (77.2 kB view details)

Uploaded Source

Built Distributions

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

line_profiler-4.1.1-cp311-cp311-win_amd64.whl (119.8 kB view details)

Uploaded CPython 3.11Windows x86-64

line_profiler-4.1.1-cp311-cp311-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

line_profiler-4.1.1-cp311-cp311-musllinux_1_1_i686.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ i686

line_profiler-4.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (749.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

line_profiler-4.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (728.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

line_profiler-4.1.1-cp311-cp311-macosx_10_9_x86_64.whl (132.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

line_profiler-4.1.1-cp310-cp310-win_amd64.whl (118.5 kB view details)

Uploaded CPython 3.10Windows x86-64

line_profiler-4.1.1-cp310-cp310-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

line_profiler-4.1.1-cp310-cp310-musllinux_1_1_i686.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

line_profiler-4.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (709.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

line_profiler-4.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (692.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686

line_profiler-4.1.1-cp310-cp310-macosx_10_9_x86_64.whl (132.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

line_profiler-4.1.1-cp39-cp39-win_amd64.whl (118.9 kB view details)

Uploaded CPython 3.9Windows x86-64

line_profiler-4.1.1-cp39-cp39-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

line_profiler-4.1.1-cp39-cp39-musllinux_1_1_i686.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

line_profiler-4.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (708.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

line_profiler-4.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (692.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686

line_profiler-4.1.1-cp39-cp39-macosx_10_9_x86_64.whl (132.5 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

line_profiler-4.1.1-cp38-cp38-win_amd64.whl (119.0 kB view details)

Uploaded CPython 3.8Windows x86-64

line_profiler-4.1.1-cp38-cp38-musllinux_1_1_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

line_profiler-4.1.1-cp38-cp38-musllinux_1_1_i686.whl (1.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ i686

line_profiler-4.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (721.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

line_profiler-4.1.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (703.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686

line_profiler-4.1.1-cp38-cp38-macosx_10_9_x86_64.whl (132.8 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

line_profiler-4.1.1-cp37-cp37m-win_amd64.whl (117.9 kB view details)

Uploaded CPython 3.7mWindows x86-64

line_profiler-4.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

line_profiler-4.1.1-cp37-cp37m-musllinux_1_1_i686.whl (1.3 MB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ i686

line_profiler-4.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (675.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

line_profiler-4.1.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (658.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686

line_profiler-4.1.1-cp37-cp37m-macosx_10_9_x86_64.whl (131.3 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

line_profiler-4.1.1-cp36-cp36m-win_amd64.whl (124.9 kB view details)

Uploaded CPython 3.6mWindows x86-64

line_profiler-4.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ x86-64

line_profiler-4.1.1-cp36-cp36m-musllinux_1_1_i686.whl (1.2 MB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ i686

line_profiler-4.1.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (668.2 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

line_profiler-4.1.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl (649.0 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ i686

line_profiler-4.1.1-cp36-cp36m-macosx_10_9_x86_64.whl (128.7 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

Details for the file line_profiler-4.1.1.tar.gz.

File metadata

  • Download URL: line_profiler-4.1.1.tar.gz
  • Upload date:
  • Size: 77.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for line_profiler-4.1.1.tar.gz
Algorithm Hash digest
SHA256 2fa73d2ac736902e0a6d1e74cf663244218d9c238a7aa5b5acfd6ac6d4672830
MD5 116969bb3989c201948baefcd2c1d957
BLAKE2b-256 59e4229c60adc6ebcca025db683abffedb5e5de79f4c1cffd0c3e7366b8cc901

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 521eae25a5629e30e3f93a1aedfd20e423352316af29ba1805f8a60fe2b8ec37
MD5 902017ff1f760cafbffb874ff91e375e
BLAKE2b-256 543299d60dc87461702c364be5be44a8f4108725c452e66d1b6985f9064f2467

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9f7fec0d06f96e963cc30647f65442e5264f31c80d0f60dcd4a059973bf24281
MD5 2a20731ddb84e713a048de5b6155ee53
BLAKE2b-256 c4c34872ad57507fe930eb02fb517b33802eb2dc5c2788a10cdaa69f6d2e5f14

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 e9712fcae893ada6217586e3a4d73eaf7a1146596bb9e8152c963413eeb06384
MD5 3ffddc20966b2acc08d92d997c9c3fdf
BLAKE2b-256 a616968db79009a3419982b82cd4afea1280974eb3cf5f92a8651ac901d15d08

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 33c00f4740640aa729fe7118d0dd3c2b96af201c20afcbb5c5f71e1a3cfa10d8
MD5 1f43dcf662fe15768779f54e206e7228
BLAKE2b-256 672f4e2db7d379501ba2a7d7f45d3015a63c4495826a592920690f5676c7532f

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 14944cf27c355f37e577d5c9a19192d9225766065fc3ea6bfc244ea10f6a4b9b
MD5 1895c97ed4709f30534c2a35d85bcd66
BLAKE2b-256 71993518119e98e244d4f70babef1f8c3c9dc7b6302538f06d81a19479b4d132

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b46c0c4367077cb77187aca50ee79df1e09348d05dbf0a15341f50741101daa3
MD5 e5973bdba615e979d8466dd1736e51b4
BLAKE2b-256 3397c8c8659e4caaeac02b83ef403d0da687e78b54e3a1a86d9aa214a583313a

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1e750b1575e1e8c16da4a045ba4d566eb119a40b0a4ec9c4290cde6f7b2aa292
MD5 c450fa0df3892737cb13f6f5801a8f10
BLAKE2b-256 0c652bbbd5d9730ad709fbb8323b25830bb26dfd9b2e73a77ce81e560becece6

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b0707458ce16be63855c12f42790bef520ec9674a7373cbb2eec28e3c00dffeb
MD5 9d8c0068558f941db81acc39d0d6cf71
BLAKE2b-256 db34f855eb8394f4c1be6285e8bb87d1f19b4004a2da631152bcae225a2d16b3

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 99991e9af0b94aa41e3bf7745a21ea194076bd18640d63fdd6f2a535aaa030d0
MD5 d7ec3c62db707b42e2e58fe8bd682d89
BLAKE2b-256 a8288dc650dbef2e9faefda7924e14adca75ae8c7e291eb9e5d29cafe2e8ece0

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 86851d76cbc3c74c6cb1685cb22802e75b61f8c1d5cf4c1e7c9f3d8c7a032053
MD5 d7f2e11a5e28abc62ce12fb6e7304bdf
BLAKE2b-256 f9accf37cccb2cb1e2dbef12ddafc3e98940af6a6427911a037f8a6d466b0058

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 832fb1b2fcec6f466d1b28456ea6bd5208784326202569631100b7281331ca3c
MD5 7762e9b05bf89cef787c2b6c0bc9f192
BLAKE2b-256 89a6312d73880c3844087f766c8e0291ed524b7c7ae9857fffef1532d88f649e

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a33d728098af1c0d24a7d6cb121bf4627d423fcd6bc6759525df4b1713fcf7cb
MD5 351ce86d57a53b6c8dca32dced2ca73d
BLAKE2b-256 505c558dbdc6159597405a87d188f1208d82dd3e4a094579c8857dc25ff86036

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 583f3e6282a47f5f1c2aeb1234114f0d49d2eba0bb9c1f05c268d1543fe85794
MD5 a730cdc02efa8fcef7649f505f558e0a
BLAKE2b-256 76bc156c36fc5aed7eb63d2928e531f2d4c40894720b5a6094fa97939372ffda

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 fc9703f7aeff1e445661e3cc5b65f139e5e9a0f0666d0cde173586b841401fda
MD5 65b2cc521df18db54cfe6fdbbb09ec0d
BLAKE2b-256 bdb7d30b9623992a112261a200e1e71d3b59e66ab2e9da99ea1bef30d6cce2ff

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 924ab02db0d4572dd5f4945c1e0239ec300003fdce47a8ae1775a72477442d92
MD5 06505ed44b8d4948e62d713408633b01
BLAKE2b-256 1c59e1bf174e3bf729149e9fa29d92c92271f1ad8f724f649bf2bf09509c5c74

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8ada23285e774adfec4088ca8a53565fcd55397d0c2287a03835f9e319785b3e
MD5 9fbe3106c5cc5934bf5b1be583bbdfd1
BLAKE2b-256 0d41d91ae1d2f3b10684df01d98944c1644e6323ffd465c7e651b4391d5d1761

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 afa938b78de445f418825017732d4d4ff7a04398c02b57b15803e7936dfd0b39
MD5 10986f20af40090cd3f3522d9078494d
BLAKE2b-256 da5550731bdca559e97bf1f96abaf5a86ac2e47249f90595cba4aad6642a9c6f

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ec5850c0fdcd7d2b55065c4c3fa92578e0d1331d610431f19af99ed056ef53dd
MD5 4b1980094e5b862f672cdcd6faee8d87
BLAKE2b-256 bf56acc2ecd4b183686e3fd12ff5d7c7fa04329e44f91780fda8cadb370d548a

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b432ab2424763103ab01cd7cd38d02de921530b05bc488240be587b29d64fa94
MD5 b2eeee837fdd28cf4e432481eff72c4d
BLAKE2b-256 60671cc05f07acb2de6ae3ef3cbec5483629ea0316f6fcc35f2229b514746d07

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d161a6e34a8998cd7b94cd7e59c0501a4c06e32a9b0211125f03cbe7643c8142
MD5 bae130fbb2599c6df0f5580e5d934ce4
BLAKE2b-256 38461c6076404b2eb0500b9a1c2891a8623bc7f92cf713cefe035d74b097174f

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 508f5b6fd43047b0da2cf746f89b56064f23ac9040a1bdc258323634a1e17789
MD5 a497316abbd8cb4f3cffaed11e0a9b41
BLAKE2b-256 3403bf9bf47ca847c207c44e281dbedc01e3c3086e740fbe7c79ac4562dd1b86

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ebea1e3a07f5f2925e6acc52007f041f173fe925b4876ce8c8b169620bf04f3
MD5 cac53cb14415287dd165a9778f43da3b
BLAKE2b-256 c53d6eef45c60bbe8cd84cf7a801f0fa6525b41c9f99318a3b1780594636f8b2

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1c0f4953090cb280ea6ab3d1fe1b194c4233deb1ee13ce5dc7701b6351fc244f
MD5 01c643c1ab2716afd0f79e2b25382f2e
BLAKE2b-256 61957013676fcb108769f98e9eae9ee938f8f81f6bbf8f3d6c1b73045a3b738c

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 93401ea36653105568824becebe21e2a3c0c3e14b671268692b0af979ffa3cda
MD5 52149d43877535b409713bdded21b0a9
BLAKE2b-256 04e4bde83fb99855f15d76a57a5b4e04ba4ff9680bdffff5ebaa4e97df906e27

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7e37b62e47814081e36e33c9aee27c966e22ae4ac05b45515e45e5992d121698
MD5 d1ce72e8899ae3e5774a19cf5e4d5870
BLAKE2b-256 5f70d9bcff7bc7c2551ccf3319e60f37c9c72903f3ad17f8a860b8120478c786

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b987232d30f659591c978a40192e66f3815c9be8300cc927d264af9cd9eb73b8
MD5 bff0d3c260f1ec314a358cc811979b5c
BLAKE2b-256 d32f7371acb2f82ac1a32fca23e53ac899446606b8ef3126c0c5ef86094a930e

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 66288d7b28c65a647186d5127593041f4ffe9e78649bc4fc2b309d74d2ca6c1f
MD5 d68d9e2be2227eca29d37c59cf389ae3
BLAKE2b-256 4e557c0ba5c2f5898c592d58f8ad311dcc6abbbc536f2fd6a3e66c604b21dcdb

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f67eed9a168293b7ebc5082ec003b4f72c5bd16853a57188d1060e5b6bb2232
MD5 2c73c35df28518a341bd4a75ca855f39
BLAKE2b-256 ee9459e1bf89d25c4cf36d664c4638421532cf0561bf8d60a5cdbb3a386d803f

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 dea7e688ede3bf1ab85fa71963847472ab5e88ca0d70d46ad5acdd788af584e0
MD5 8083d9a7741404e15b732502fbd5d147
BLAKE2b-256 33129aa6e992c26bb7b254ed077cdd457a3d60a9f323e7b6d8a889db425f28cc

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b4d3b9026d2ee110a67b696783f5ad6c198d707701d563401a99d0dd386c5339
MD5 902a8226b22b71409215b298b6215245
BLAKE2b-256 3832820710bd8e38cf40907447b65e6379894a3a986e8c8df995f49e086313d7

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 d231d8ebda1c0daa8b5c9467932a30602855e6cec7d3e8bd1593a3be0f7e4764
MD5 de6d35e82eca5353c9f7939aa465b29c
BLAKE2b-256 7037632485df39240319fe4b93b9cb86c0f91bd15c5056ae61dc0855ea031a7e

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b3ed8a4150f7005c477853a97e3d7d36359d0bbdf5992b22cc050eb2b915a9a0
MD5 636aa659d530ae5f3cbd8d674d0898c0
BLAKE2b-256 ec37f1692053ea3deccef6284f1ce7dd60935d858060c7868b1ddea0c5e0edef

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp36-cp36m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 6e9873556c851423c4ef112d5391b4d51b8e9f57f031d54a64687f36e17d5efd
MD5 b3d491ca52d6fdb882d0c9a6adf84969
BLAKE2b-256 ef5c1dc76bee1baea8254c326bf8ce95943db09848f35eb8c2a53dee4fa30071

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b3e6c83a2a5cee7fb3b313141b3be12ff4eb1ba7ec31fb6739ac16a2f45cd001
MD5 bf9a90875c061558af2d9db1c7331208
BLAKE2b-256 4df4b0777e7dc53d317b38891ba20da8e0f01f1cfcbe84a7ea98bbbdbc887930

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp36-cp36m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7cbaa08adac1df3b16440ed00b73645cba008355e6e36ffd44f114e91ae554f6
MD5 c2842dcdda119232f26070b3605414ba
BLAKE2b-256 93596c708bf1e08fecbef04bee65b3974537f72448c0ef2be7afa7f06dba7675

See more details on using hashes here.

File details

Details for the file line_profiler-4.1.1-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for line_profiler-4.1.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d89030daef504e4d329f9405e1aae5e1191d8bb51c2bb75f8842b2b910544521
MD5 73f7be356a1101c1592b87461bfaed79
BLAKE2b-256 dc375aecf4d4d28588d9f5e7589a4332ca5c02d53fbd73e3e2dd7b64a4ff0456

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