Skip to main content

Scalene: A high-resolution, low-overhead CPU, GPU, and memory profiler for Python with AI-powered optimization suggestions

Project description

scalene

Scalene: a Python CPU+GPU+memory profiler with AI-powered optimization proposals

by Emery Berger, Sam Stern, and Juan Altmayer Pizzorno.

Scalene community SlackScalene community Slack

PyPI Latest ReleaseAnaconda-Server BadgeDownloads Downloads Python versions License

Ozsvald tweet

(tweet from Ian Ozsvald, author of High Performance Python)

Semantic Scholar success story

About Scalene

Scalene is a high-performance CPU, GPU and memory profiler for Python that does a number of things that other Python profilers do not and cannot do. It runs orders of magnitude faster than many other profilers while delivering far more detailed information. It is also the first profiler ever to incorporate AI-powered proposed optimizations.

AI-powered optimization suggestions

Note

To enable AI-powered optimization suggestions, you need to enter an OpenAI key in the box under "Advanced options". Your account will need to have a positive balance for this to work (check your balance at https://platform.openai.com/account/usage).

Scalene advanced options

Once you've entered your OpenAI key (see above), click on the lightning bolt (⚡) beside any line or the explosion (💥) for an entire region of code to generate a proposed optimization. Click on a proposed optimization to copy it to the clipboard.

example proposed optimization

You can click as many times as you like on the lightning bolt or explosion, and it will generate different suggested optimizations. Your mileage may vary, but in some cases, the suggestions are quite impressive (e.g., order-of-magnitude improvements).

Quick Start

Installing Scalene:

python3 -m pip install -U scalene

or

conda install -c conda-forge scalene

Using Scalene:

Commonly used options:
scalene your_prog.py                             # full profile (outputs to web interface)
python3 -m scalene your_prog.py                  # equivalent alternative

scalene --cli your_prog.py                       # use the command-line only (no web interface)

scalene --cpu your_prog.py                       # only profile CPU
scalene --cpu --gpu your_prog.py                 # only profile CPU and GPU
scalene --cpu --gpu --memory your_prog.py        # profile everything (same as no options)

scalene --reduced-profile your_prog.py           # only profile lines with significant usage
scalene --profile-interval 5.0 your_prog.py      # output a new profile every five seconds

scalene (Scalene options) --- your_prog.py (...) # use --- to tell Scalene to ignore options after that point
scalene --help                                   # lists all options
Using Scalene programmatically in your code:

Invoke using scalene as above and then:

from scalene import scalene_profiler

# Turn profiling on
scalene_profiler.start()

# Turn profiling off
scalene_profiler.stop()
Using Scalene to profile only specific functions via @profile:

Just preface any functions you want to profile with the @profile decorator and run it with Scalene:

# do not import profile!

@profile
def slow_function():
    import time
    time.sleep(3)

Web-based GUI

Scalene has both a CLI and a web-based GUI (demo here).

By default, once Scalene has profiled your program, it will open a tab in a web browser with an interactive user interface (all processing is done locally). Hover over bars to see breakdowns of CPU and memory consumption, and click on underlined column headers to sort the columns. The generated file profile.html is self-contained and can be saved for later use.

Scalene web GUI

Scalene Overview

Scalene talk (PyCon US 2021)

This talk presented at PyCon 2021 walks through Scalene's advantages and how to use it to debug the performance of an application (and provides some technical details on its internals). We highly recommend watching this video!

Scalene presentation at PyCon 2021

Fast and Accurate

  • Scalene is fast. It uses sampling instead of instrumentation or relying on Python's tracing facilities. Its overhead is typically no more than 10-20% (and often less).

  • Scalene is accurate. We tested CPU profiler accuracy and found that Scalene is among the most accurate profilers, correctly measuring time taken.

Profiler accuracy

  • Scalene performs profiling at the line level and per function, pointing to the functions and the specific lines of code responsible for the execution time in your program.

CPU profiling

  • Scalene separates out time spent in Python from time in native code (including libraries). Most Python programmers aren't going to optimize the performance of native code (which is usually either in the Python implementation or external libraries), so this helps developers focus their optimization efforts on the code they can actually improve.
  • Scalene highlights hotspots (code accounting for significant percentages of CPU time or memory allocation) in red, making them even easier to spot.
  • Scalene also separates out system time, making it easy to find I/O bottlenecks.

GPU profiling

  • Scalene reports GPU time (currently limited to NVIDIA-based systems).

Memory profiling

  • Scalene profiles memory usage. In addition to tracking CPU usage, Scalene also points to the specific lines of code responsible for memory growth. It accomplishes this via an included specialized memory allocator.
  • Scalene separates out the percentage of memory consumed by Python code vs. native code.
  • Scalene produces per-line memory profiles.
  • Scalene identifies lines with likely memory leaks.
  • Scalene profiles copying volume, making it easy to spot inadvertent copying, especially due to crossing Python/library boundaries (e.g., accidentally converting numpy arrays into Python arrays, and vice versa).

Other features

  • Scalene can produce reduced profiles (via --reduced-profile) that only report lines that consume more than 1% of CPU or perform at least 100 allocations.
  • Scalene supports @profile decorators to profile only specific functions.
  • When Scalene is profiling a program launched in the background (via &), you can suspend and resume profiling.

Comparison to Other Profilers

Performance and Features

Below is a table comparing the performance and features of various profilers to Scalene.

Performance and feature comparison

  • Slowdown: the slowdown when running a benchmark from the Pyperformance suite. Green means less than 2x overhead. Scalene's overhead is just a 35% slowdown.

Scalene has all of the following features, many of which only Scalene supports:

  • Lines or functions: does the profiler report information only for entire functions, or for every line -- Scalene does both.
  • Unmodified Code: works on unmodified code.
  • Threads: supports Python threads.
  • Multiprocessing: supports use of the multiprocessing library -- Scalene only
  • Python vs. C time: breaks out time spent in Python vs. native code (e.g., libraries) -- Scalene only
  • System time: breaks out system time (e.g., sleeping or performing I/O) -- Scalene only
  • Profiles memory: reports memory consumption per line / function
  • GPU: reports time spent on an NVIDIA GPU (if present) -- Scalene only
  • Memory trends: reports memory use over time per line / function -- Scalene only
  • Copy volume: reports megabytes being copied per second -- Scalene only
  • Detects leaks: automatically pinpoints lines responsible for likely memory leaks -- Scalene only

Output

If you include the --cli option, Scalene prints annotated source code for the program being profiled (as text, JSON (--json), or HTML (--html)) and any modules it uses in the same directory or subdirectories (you can optionally have it --profile-all and only include files with at least a --cpu-percent-threshold of time). Here is a snippet from pystone.py.

Example profile

  • Memory usage at the top: Visualized by "sparklines", memory consumption over the runtime of the profiled code.
  • "Time Python": How much time was spent in Python code.
  • "native": How much time was spent in non-Python code (e.g., libraries written in C/C++).
  • "system": How much time was spent in the system (e.g., I/O).
  • "GPU": (not shown here) How much time spent on the GPU, if your system has an NVIDIA GPU installed.
  • "Memory Python": How much of the memory allocation happened on the Python side of the code, as opposed to in non-Python code (e.g., libraries written in C/C++).
  • "net": Positive net memory numbers indicate total memory allocation in megabytes; negative net memory numbers indicate memory reclamation.
  • "timeline / %": Visualized by "sparklines", memory consumption generated by this line over the program runtime, and the percentages of total memory activity this line represents.
  • "Copy (MB/s)": The amount of megabytes being copied per second (see "About Scalene").

Scalene

The following command runs Scalene on a provided example program.

scalene test/testme.py
Click to see all Scalene's options (available by running with --help)
    % scalene --help
     usage: scalene [-h] [--outfile OUTFILE] [--html] [--reduced-profile]
                    [--profile-interval PROFILE_INTERVAL] [--cpu-only]
                    [--profile-all] [--profile-only PROFILE_ONLY]
                    [--use-virtual-time]
                    [--cpu-percent-threshold CPU_PERCENT_THRESHOLD]
                    [--cpu-sampling-rate CPU_SAMPLING_RATE]
                    [--malloc-threshold MALLOC_THRESHOLD]
     
     Scalene: a high-precision CPU and memory profiler.
     https://github.com/plasma-umass/scalene
     
     command-line:
        % scalene [options] yourprogram.py
     or
        % python3 -m scalene [options] yourprogram.py
     
     in Jupyter, line mode:
        %scrun [options] statement
     
     in Jupyter, cell mode:
        %%scalene [options]
        code...
        code...
     
     optional arguments:
       -h, --help            show this help message and exit
       --outfile OUTFILE     file to hold profiler output (default: stdout)
       --html                output as HTML (default: text)
       --reduced-profile     generate a reduced profile, with non-zero lines only (default: False)
       --profile-interval PROFILE_INTERVAL
                             output profiles every so many seconds (default: inf)
       --cpu-only            only profile CPU time (default: profile CPU, memory, and copying)
       --profile-all         profile all executed code, not just the target program (default: only the target program)
       --profile-only PROFILE_ONLY
                             profile only code in filenames that contain the given strings, separated by commas (default: no restrictions)
       --use-virtual-time    measure only CPU time, not time spent in I/O or blocking (default: False)
       --cpu-percent-threshold CPU_PERCENT_THRESHOLD
                             only report profiles with at least this percent of CPU time (default: 1%)
       --cpu-sampling-rate CPU_SAMPLING_RATE
                             CPU sampling rate (default: every 0.01s)
       --malloc-threshold MALLOC_THRESHOLD
                             only report profiles with at least this many allocations (default: 100)
     
     When running Scalene in the background, you can suspend/resume profiling
     for the process ID that Scalene reports. For example:
     
        % python3 -m scalene [options] yourprogram.py &
      Scalene now profiling process 12345
        to suspend profiling: python3 -m scalene.profile --off --pid 12345
        to resume profiling:  python3 -m scalene.profile --on  --pid 12345

Scalene with Jupyter

Instructions for installing and using Scalene with Jupyter notebooks

This notebook illustrates the use of Scalene in Jupyter.

Installation:

!pip install scalene
%load_ext scalene

Line mode:

%scrun [options] statement

Cell mode:

%%scalene [options]
code...
code...

Installation

Using pip (Mac OS X, Linux, Windows, and WSL2)

Scalene is distributed as a pip package and works on Mac OS X, Linux (including Ubuntu in Windows WSL2) and (with limitations) Windows platforms. (Note: the Windows version isn't yet complete; it currently only supports CPU and GPU profiling, but not memory profiling.)

You can install it as follows:

  % pip install -U scalene

or

  % python3 -m pip install -U scalene

You may need to install some packages first.

See https://stackoverflow.com/a/19344978/4954434 for full instructions for all Linux flavors.

For Ubuntu/Debian:

  % sudo apt install git python3-all-dev
Using Homebrew (Mac OS X)

As an alternative to pip, you can use Homebrew to install the current version of Scalene from this repository:

  % brew tap plasma-umass/scalene
  % brew install --head plasma-umass/scalene/scalene
On ArchLinux

You can install Scalene on Arch Linux via the AUR package. Use your favorite AUR helper, or manually download the PKGBUILD and run makepkg -cirs to build. Note that this will place libscalene.so in /usr/lib; modify the below usage instructions accordingly.

Asked Questions

Can I use Scalene with PyTest?

A: Yes! You can run it as follows (for example):

python3 -m scalene --- -m pytest your_test.py

Is there any way to get shorter profiles or do more targeted profiling?

A: Yes! There are several options:

  1. Use --reduced-profile to include only lines and files with memory/CPU/GPU activity.
  2. Use --profile-only to include only filenames containing specific strings (as in, --profile-only foo,bar,baz).
  3. Decorate functions of interest with @profile to have Scalene report only those functions.
  4. Turn profiling on and off programmatically by importing Scalene (import scalene) and then turning profiling on and off via scalene_profiler.start() and scalene_profiler.stop(). By default, Scalene runs with profiling on, so to delay profiling until desired, use the --off command-line option (python3 -m scalene --off yourprogram.py).
How do I run Scalene in PyCharm?

A: In PyCharm, you can run Scalene at the command line by opening the terminal at the bottom of the IDE and running a Scalene command (e.g., python -m scalene <your program>). Use the options --cli, --html, and --outfile <your output.html> to generate an HTML file that you can then view in the IDE.

How do I use Scalene with Django?

A: Pass in the --noreload option (see https://github.com/plasma-umass/scalene/issues/178).

How do I use Scalene with PyTorch on the Mac?

A: Scalene works with PyTorch version 1.5.1 on Mac OS X. There's a bug in newer versions of PyTorch (https://github.com/pytorch/pytorch/issues/57185) that interferes with Scalene (discussion here: https://github.com/plasma-umass/scalene/issues/110), but only on Macs.

Technical Information

For details about how Scalene works, please see the following paper, which won the Jay Lepreau Best Paper Award at OSDI 2023: Triangulating Python Performance Issues with Scalene. (Note that this paper does not include information about the AI-driven proposed optimizations.)

Success Stories

If you use Scalene to successfully debug a performance problem, please add a comment to this issue!

Acknowledgements

Logo created by Sophia Berger.

This material is based upon work supported by the National Science Foundation under Grant No. 1955610. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

scalene-1.5.27.tar.gz (8.0 MB view details)

Uploaded Source

Built Distributions

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

scalene-1.5.27-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (831.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

scalene-1.5.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (819.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

scalene-1.5.27-cp311-cp311-macosx_12_0_universal2.whl (540.7 kB view details)

Uploaded CPython 3.11macOS 12.0+ universal2 (ARM64, x86-64)

scalene-1.5.27-cp310-cp310-win_amd64.whl (369.3 kB view details)

Uploaded CPython 3.10Windows x86-64

scalene-1.5.27-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (820.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

scalene-1.5.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (807.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

scalene-1.5.27-cp310-cp310-macosx_12_0_universal2.whl (537.8 kB view details)

Uploaded CPython 3.10macOS 12.0+ universal2 (ARM64, x86-64)

scalene-1.5.27-cp39-cp39-win_amd64.whl (369.3 kB view details)

Uploaded CPython 3.9Windows x86-64

scalene-1.5.27-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (819.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

scalene-1.5.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (806.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

scalene-1.5.27-cp39-cp39-macosx_12_0_universal2.whl (537.8 kB view details)

Uploaded CPython 3.9macOS 12.0+ universal2 (ARM64, x86-64)

scalene-1.5.27-cp38-cp38-win_amd64.whl (369.3 kB view details)

Uploaded CPython 3.8Windows x86-64

scalene-1.5.27-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (821.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

scalene-1.5.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (808.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

scalene-1.5.27-cp38-cp38-macosx_12_0_universal2.whl (537.9 kB view details)

Uploaded CPython 3.8macOS 12.0+ universal2 (ARM64, x86-64)

File details

Details for the file scalene-1.5.27.tar.gz.

File metadata

  • Download URL: scalene-1.5.27.tar.gz
  • Upload date:
  • Size: 8.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for scalene-1.5.27.tar.gz
Algorithm Hash digest
SHA256 d0cf1ffa9119ad7f0ec11ce1a03acee18afdcb484181d75d2c62787e237e967e
MD5 767f269f87d80505e7ef856464738a5b
BLAKE2b-256 bdbc0654910e6512ab176a8aa53371e908f84c68ea7f7e02eb9f0e8bdc501b5e

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 96376190e69944992321bb521386a8cbccf663258cec91ebdc7634ab6554108c
MD5 e13acf1e76ecf1b203a2cf3efe6d9d88
BLAKE2b-256 37f2c3bf7240523e0994aace509a860b17a2084b37de55ac39b127699c599a3e

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 654a248412106b01969bff8835f38208194dec566e073f9e413a8d2264730b15
MD5 15e13722cdf87d2502b91b2660427b99
BLAKE2b-256 d0b272950429339a4c4ffba2242f5ffbc3ea850164c161ea664364d109f5e9fa

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp311-cp311-macosx_12_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp311-cp311-macosx_12_0_universal2.whl
Algorithm Hash digest
SHA256 58c0af19c16e17fb67596cccfd4dbdea75077cb7a8e23edaa8e1d5200a0df72f
MD5 6840d9ca3fafb057e17bc7238761acfa
BLAKE2b-256 5de198947746c563f357765a7b8476790711aca41ba6d64b7b4559ce42596f59

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: scalene-1.5.27-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 369.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for scalene-1.5.27-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 73389ca0eb5427c99351f82f7da7bd4a81686a9430f792892d30083d2a90fc63
MD5 0790e13b622614fed20a6213e5657557
BLAKE2b-256 8668e62265cfdd469830d2d38aacb249a02a8cf6a5a129595d50a3f3ffec71bb

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ef7734c72c379d2ad0f097d840f227db83c4474d69f6ce804c8e8d821d54d0b0
MD5 c4ef1e311655189b306261c30e3f4139
BLAKE2b-256 d36289dc337f8c08a4e2521ed8350872433f862dc1431594da7c80d84150c4d4

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 35599478745c5496e395d085970b3d0d4fa9574243fb565f0a124c383715161f
MD5 ff5e54ee5a4fb52aa90365f4f797a9d6
BLAKE2b-256 938b288b3f62f39a040807ab49f06233dbc029418486ac952551b8b41f8c172a

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp310-cp310-macosx_12_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp310-cp310-macosx_12_0_universal2.whl
Algorithm Hash digest
SHA256 1e5d55cdd266ade682b924a87df5da6dc00fca86bb4c3823a03d54415373c9ac
MD5 1eabadd321ac85cc063d4102a1444399
BLAKE2b-256 e965bcb4c60108d0f4a8b177da893a1c8c32e6cc70365765f273d747c1f0ca5a

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: scalene-1.5.27-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 369.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for scalene-1.5.27-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a8ffac76da1ce85e26f5f93d5da01c472514fbd8d123f3aa765e27968ba02301
MD5 99d7c7993f956df961e1d3e7764601cf
BLAKE2b-256 c16ed530e61b62ca8ba30b11e274e74a06382a36564162837d6527e385662c00

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 74d8d4ed5a710c3bdb56b853c64853f4bbbe04d829c9903b83101e486e93a45b
MD5 3013094427a30bd56e042dc42bdbec42
BLAKE2b-256 623ff114de5ea414c877d088c05885ca10b67bd6730190a0347f37932c0c5451

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 63e053fe1e613b9571edd007102ea560682dc6bf3cb49f3ed50c00295396f655
MD5 28212f03d3d9fc1aa8ff51e617b9622b
BLAKE2b-256 68b4a1b489ee760499d82b5a02de71e320fd66fd0f66906c90c0afac13bd41ee

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp39-cp39-macosx_12_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp39-cp39-macosx_12_0_universal2.whl
Algorithm Hash digest
SHA256 55078c0c37c205281a5e80c3fafeee8b14b5b62dc3b60a9bbf6fe82571242c39
MD5 73e0bcd7f503e424b0c4db87ed37e4b4
BLAKE2b-256 51b09e6ccd6bcfa1927216b040ac3232eefb43c9974fbfbac28580b0882a37cd

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: scalene-1.5.27-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 369.3 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for scalene-1.5.27-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f4de5a5d45aaa18b516cc6f05d3775f655f2ae7710399c3eb8b099a3639f8837
MD5 e6e3b0b6e9754c2f04889595d8592f2d
BLAKE2b-256 86cc0dcfc8dc9ad4a21e0e19c1174765917f514f8e0f50a0225987c50df0f0e6

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1ca926ad004f380a8e334c3ac58da271c3283f338a2a1db09679665d547a405d
MD5 490e094e618fe56bdda7a74d9b246784
BLAKE2b-256 7292e466ac17d6cab1e833a7830979efc22db4749299fe5e300c7db347c2cf25

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7a821da7fa48bd53737325cd5a6e8fee50a5c017ced34503a6894a6faabbb997
MD5 b4f29245a65dde317495c543235937d9
BLAKE2b-256 2ceea562084440122d40f395c5d329c40e4411f924d730ffbb1aa0b149596a93

See more details on using hashes here.

File details

Details for the file scalene-1.5.27-cp38-cp38-macosx_12_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.27-cp38-cp38-macosx_12_0_universal2.whl
Algorithm Hash digest
SHA256 189b885a9577ba390392a6db2812217130835e612a4e00ba36f2165659b2903d
MD5 e63f0209c900f472a30a0c226f120b58
BLAKE2b-256 21c920b41974a300e40d989161e3cb95ebc042195baaca4759a007e2642a09bc

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