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 Badge DownloadsAnaconda downloads Downloads Python versionsVisual Studio Code Extension version License GitHub Repo stars

Ozsvald tweet

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

Semantic Scholar success story

Scalene web-based user interface: http://plasma-umass.org/scalene-gui/

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:

After installing Scalene, you can use Scalene at the command line, or as a Visual Studio Code extension.

Using the Scalene VS Code Extension:

First, install the Scalene extension from the VS Code Marketplace or by searching for it within VS Code by typing Command-Shift-X (Mac) or Ctrl-Shift-X (Windows). Once that's installed, click Command-Shift-P or Ctrl-Shift-P to open the Command Palette. Then select "Scalene: AI-powered profiling..." (you can start typing Scalene and it will pop up if it's installed). Run that and, assuming your code runs for at least a second, a Scalene profile will appear in a webview.

Screenshot 2023-09-20 at 7 09 06 PM
Commonly used command-line 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()

# your code

# Turn profiling off
scalene_profiler.stop()
from scalene.scalene_profiler import enable_profiling

with enable_profiling():
    # do something
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 currently only supports CPU and GPU profiling, but not memory or copy 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 conda (Mac OS X, Linux, Windows, and WSL2)
  % conda install -c conda-forge scalene

Scalene is distributed as a conda package and works on Mac OS X, Linux (including Ubuntu in Windows WSL2) and (with limitations) Windows platforms.

Note

The Windows version currently only supports CPU and GPU profiling, but not memory or copy profiling.

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.

Frequently 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 profiler (from scalene import scalene_profiler) 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).

Does Scalene work with gevent/Greenlets?

A: Yes! Put the following code in the beginning of your program, or modify the call to monkey.patch_all as below:

from gevent import monkey
monkey.patch_all(thread=False)
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.)

To cite Scalene in an academic paper, please use the following:
@inproceedings{288540,
author = {Emery D. Berger and Sam Stern and Juan Altmayer Pizzorno},
title = {Triangulating Python Performance Issues with {S}calene},
booktitle = {{17th USENIX Symposium on Operating Systems Design and Implementation (OSDI 23)}},
year = {2023},
isbn = {978-1-939133-34-2},
address = {Boston, MA},
pages = {51--64},
url = {https://www.usenix.org/conference/osdi23/presentation/berger},
publisher = {USENIX Association},
month = jul
}

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.51.tar.gz (9.2 MB view details)

Uploaded Source

Built Distributions

scalene-1.5.51-cp313-cp313-win_amd64.whl (862.4 kB view details)

Uploaded CPython 3.13 Windows x86-64

scalene-1.5.51-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

scalene-1.5.51-cp313-cp313-macosx_14_0_universal2.whl (973.2 kB view details)

Uploaded CPython 3.13 macOS 14.0+ universal2 (ARM64, x86-64)

scalene-1.5.51-cp313-cp313-macosx_13_0_universal2.whl (973.8 kB view details)

Uploaded CPython 3.13 macOS 13.0+ universal2 (ARM64, x86-64)

scalene-1.5.51-cp312-cp312-win_amd64.whl (862.4 kB view details)

Uploaded CPython 3.12 Windows x86-64

scalene-1.5.51-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

scalene-1.5.51-cp312-cp312-macosx_14_0_universal2.whl (973.2 kB view details)

Uploaded CPython 3.12 macOS 14.0+ universal2 (ARM64, x86-64)

scalene-1.5.51-cp312-cp312-macosx_13_0_universal2.whl (973.8 kB view details)

Uploaded CPython 3.12 macOS 13.0+ universal2 (ARM64, x86-64)

scalene-1.5.51-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

scalene-1.5.51-cp311-cp311-macosx_14_0_universal2.whl (973.4 kB view details)

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

scalene-1.5.51-cp311-cp311-macosx_13_0_universal2.whl (974.0 kB view details)

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

scalene-1.5.51-cp310-cp310-win_amd64.whl (862.4 kB view details)

Uploaded CPython 3.10 Windows x86-64

scalene-1.5.51-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

scalene-1.5.51-cp310-cp310-macosx_14_0_universal2.whl (973.3 kB view details)

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

scalene-1.5.51-cp310-cp310-macosx_13_0_universal2.whl (973.2 kB view details)

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

scalene-1.5.51-cp39-cp39-win_amd64.whl (862.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

scalene-1.5.51-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

scalene-1.5.51-cp39-cp39-macosx_14_0_universal2.whl (973.2 kB view details)

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

scalene-1.5.51-cp39-cp39-macosx_13_0_universal2.whl (973.1 kB view details)

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

scalene-1.5.51-cp38-cp38-win_amd64.whl (862.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

scalene-1.5.51-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (1.2 MB view details)

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

scalene-1.5.51-cp38-cp38-macosx_14_0_universal2.whl (973.2 kB view details)

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

scalene-1.5.51-cp38-cp38-macosx_13_0_universal2.whl (973.0 kB view details)

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

File details

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

File metadata

  • Download URL: scalene-1.5.51.tar.gz
  • Upload date:
  • Size: 9.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for scalene-1.5.51.tar.gz
Algorithm Hash digest
SHA256 ad33b6ce79239b5a6aff4ec78fa576fe2076b46f78c4c7e5fbc78a927b83374d
MD5 49ae4b68980f862deaa4d217a9c56e6f
BLAKE2b-256 4ca4e35a4e22a309ad6a886f0f3a66fd25ae1d0317d1aa81d21b79b3fe1b7cb9

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: scalene-1.5.51-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 862.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for scalene-1.5.51-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bdb261a2f7f17724fe27e4c7d703136a75dd45da940c18db7c6cbe8937d5315f
MD5 682a6bf8de5bd7ebca6c0ad1a5f23657
BLAKE2b-256 0962a3ea6afe4498a3cc2d45c7e544a766ff44449cc25596cbbea43df6c56d01

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 839c22aad181345ee19fdf8a7c91d9e232583f471df318e1683e381f8d7b28f0
MD5 e3889601b10f3af92512f6d1b59f6136
BLAKE2b-256 2398587b1f21598fc4bba2195c9061ed76886419a1ec168e77865d0139de26eb

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp313-cp313-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp313-cp313-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 d563356192ff59a4d5e80a921db6d960ebbda6a4e36765cebd2b57b7ca341cc4
MD5 75a0a23fb1ed426303f668007da54a8a
BLAKE2b-256 b4a4bc99cdab5309e5143d0c0780c44fa3bf747b550af2beaa9cbc2622a844bc

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp313-cp313-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp313-cp313-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 2a194c427fabff8e0a6b7fe2f3827b6e24db84f830c4bff8a0742d59fb2804ed
MD5 00522ece905c231ebddc941a1e8442a5
BLAKE2b-256 c233b385ffba87420535353977d8f5cafe3c0678430681720f61c2bad677589b

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: scalene-1.5.51-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 862.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for scalene-1.5.51-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e53393ffe3fa67d1952b0b7eb8d7787b16f5569553433d6204416591c2e884a3
MD5 92bfa71886c8706ab3ef2798276bb7e7
BLAKE2b-256 48cbdf80c9f6b0b9b1748b9410e7a10a2f8f791d8588a1e0496bc7d0c6eecf71

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 95fc48f2766f9e6c6b1d51942fe8949d422d0025c17471d80f4a67452508053a
MD5 b3b08fe990f820263c76486e18a2409e
BLAKE2b-256 11de29a375bc1dc77033c5abbf7c465056557fb3f927eceb623c4b085f5dbf1d

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp312-cp312-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp312-cp312-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 4c12d714ce6664c2bd1adab72640bf65fbd9ca2c31164f26b99e898dfe53b754
MD5 beb7cac43e6a7ff18698521e04687eeb
BLAKE2b-256 dbf7657b5fdbbf6eed0f1007f97f8992ef945dd3bc0dafb490cc5e660c40d374

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp312-cp312-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp312-cp312-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 b9daaefdfc2c20d22aa1ad261cc5965fd73f2dd184fba126be4dc19aae44d141
MD5 f27904896ac4876c26ad8d6d8b905bf5
BLAKE2b-256 aa39ace88bf09bca876ae9bd5009042dc95e4b9aae01c24dfc03cae33360d486

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scalene-1.5.51-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69e01a63de13190ca4c671139f7d94e3d6e34bf38941dbd60f1bda922190530a
MD5 3d7cc4eba158905506bb123a93c8bc71
BLAKE2b-256 9c7d7f11218e13c40ae78f63e9624be8d4996e7b8a295814ae45ade4a3ecd9f1

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp311-cp311-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp311-cp311-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 5c5e216dd604641e8ffd8cbdd2c8682e98cb75afcd4992e5606f3894d453cd68
MD5 5b6407c339858cc80e9ea97ce4e4c32d
BLAKE2b-256 cb93880af1c86e0df7d5fcb060c7fdc18dfe2326efd08b902edf0b1eb1223625

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp311-cp311-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp311-cp311-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 bc9b73db7fc9d088406129a2dae9921a11813c937b1a9084001a86070ca0a554
MD5 ccfae3e581a165d27fb17d221e85d039
BLAKE2b-256 28b6298a623ec556f9548ad3329516b6e04c5edbe81e28c7b14d1ccd3e51f8c6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for scalene-1.5.51-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 aebf56e525db6cfb265e18b2d0229a9f6c9a8bbf8f980b834d3f0e1a13352c54
MD5 252d6b52a60a4b2429b77ddbf5701890
BLAKE2b-256 65e86f7507519724d8971d560a66b20ad92e64df1dfd3be6c6381694fceb3674

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scalene-1.5.51-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b93cba088e33851aab14f4d2e828991dd68653ee237240404a32790c2cdbdc7d
MD5 191ccd80e08a04f77824e0fae821d154
BLAKE2b-256 ebc4d2918ac765e0aa2311b27dd1abe6c6a31a528e5493dc7c3ed82661fc9153

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp310-cp310-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp310-cp310-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 f377619c497bb95355967af9a48a5fc6366e77e66067c4b30b7aee8512cca889
MD5 f8565be0b86368384548ef93feb67a8c
BLAKE2b-256 12826c294d90eeaed631e4e73b670d7c44685c7aad4f35d991b9f08c49a1151f

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp310-cp310-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp310-cp310-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 a67d730934845f51447b0da6f7e7c3ed68563236fb5bd04eb43844407e92f6fe
MD5 9c95b65240fe549cd343f633411fba30
BLAKE2b-256 1c8c4f6962ae9d48b10e450f1bd38a8a49b1c3df3bdd09f10c75904d7b23de95

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for scalene-1.5.51-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3add0db9542e9a6b9378e68bd917962f112502bfdbb4dbc909191759a12b38a2
MD5 ddd094f32a0384266fa2e113e9aaf17c
BLAKE2b-256 9eb78d73ffa37220dec6f29c045a30dea7549edbe49e86e48f050d7797018490

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scalene-1.5.51-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b23aff660ec8920a07b00b8140be132e9245788eaa9e2e21c6c274329f82aca5
MD5 e2bd33cb28220031ffccd024895338bd
BLAKE2b-256 3b21ac9e28ba13eea25de63b017e59cd3fa953d6f8a531232b299b30d9a96361

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp39-cp39-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp39-cp39-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 ae0443db52713156d799d65f0c1c8c80bdf6351a9755123284cc5dfee08a42f0
MD5 4aac5a5a5dae3ced93ee68ade4c2f871
BLAKE2b-256 4550115ca77da66f951557c0e60d432c434a2f423343780c466fbe6a0f12caca

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp39-cp39-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp39-cp39-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 c02733dad3c2655161ab02df14abd6a735fb71939cf5a6e73ccb95bba79e3507
MD5 7fa2113b49b5abe9aa5aa95d133e470c
BLAKE2b-256 5eb2d3be1e4049d2283a124b768a9e1d5a4a9b7dc91861372155c6bdc189193c

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for scalene-1.5.51-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ed0255c5e62dcc39724f7a87a2f79b07a6229802167ca9ddd590d64299b8173e
MD5 8e031d7fd3bf81537125cd8f8b279ab8
BLAKE2b-256 bab1b2009498193e8cdcd18fff9a95fb79c5f06a9c99bf30c08aa81768cbfc16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for scalene-1.5.51-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4ed31f8b9c580791f3ffb2eb0877879dc195093c276f74b3f5d6100b6ce4f484
MD5 8fb81e73fa32e17e486a9c6464523ea4
BLAKE2b-256 e443a3dc756bddf8be557d12bff40f3b8df745fb379f56382c57b5cb587d3389

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp38-cp38-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp38-cp38-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 11e52c38e2053f3a123d266f34633286383e210e19160a657058feede96533b3
MD5 0a0bd192cc8c492165d5eb716bb58c6f
BLAKE2b-256 4a298806ac0bd496aadbef92306de82f454c69c0feaedc2a89d132c460696461

See more details on using hashes here.

File details

Details for the file scalene-1.5.51-cp38-cp38-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for scalene-1.5.51-cp38-cp38-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 963add7d6fc10f01ed37c885c07277666bda008c03bab68ea401bb7613d95b33
MD5 339949cb6f76061f7fbb65a90a6b93a8
BLAKE2b-256 ed8da3847a246844bfd5e64483b2ebbed7d6c572ee5ea4eaa3a9ba88da4a455d

See more details on using hashes here.

Supported by

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