Yet Another Python Profiler
Project description
Yappi
A tracing profiler that is multithreading, asyncio and gevent aware.
Highlights
- Fast: Yappi is fast. It is completely written in C and lots of love and care went into making it fast.
- Unique: Yappi supports multithreaded, asyncio and gevent profiling. Tagging/filtering multiple profiler results has interesting use cases.
- Intuitive: Profiler can be started/stopped and results can be obtained from any time and any thread.
- Standards Compliant: Profiler results can be saved in callgrind or pstat formats.
- Rich in Feature set: Profiler results can show either Wall Time or actual CPU Time and can be aggregated from different sessions. Various flags are defined for filtering and sorting profiler results.
- Robust: Yappi has been around for years.
Motivation
CPython standard distribution comes with three deterministic profilers. cProfile
, Profile
and hotshot
. cProfile
is implemented as a C module based on lsprof
, Profile
is in pure Python and hotshot
can be seen as a small subset of a cProfile. The major issue is that all of these profilers lack support for multi-threaded programs and CPU time.
If you want to profile a multi-threaded application, you must give an entry point to these profilers and then maybe merge the outputs. None of these profilers are designed to work on long-running multi-threaded applications. It is also not possible to profile an application that start/stop/retrieve traces on the fly with these profilers.
Now fast forwarding to 2019: With the latest improvements on asyncio
library and asynchronous frameworks, most of the current profilers lacks the ability to show correct wall/cpu time or even call count information per-coroutine. Thus we need a different kind of approach to profile asynchronous code. Yappi, with v1.2 introduces the concept of coroutine profiling
. With coroutine-profiling
, you should be able to profile correct wall/cpu time and call count of your coroutine. (including the time spent in context switches, too). You can see details here.
Installation
Can be installed via PyPI
$ pip install yappi
OR from the source directly.
$ pip install git+https://github.com/sumerc/yappi#egg=yappi
Examples
A simple example:
import yappi
def a():
for _ in range(10000000): # do something CPU heavy
pass
yappi.set_clock_type("cpu") # Use set_clock_type("wall") for wall time
yappi.start()
a()
yappi.get_func_stats().print_all()
yappi.get_thread_stats().print_all()
'''
Clock type: CPU
Ordered by: totaltime, desc
name ncall tsub ttot tavg
doc.py:5 a 1 0.117907 0.117907 0.117907
name id tid ttot scnt
_MainThread 0 139867147315008 0.118297 1
'''
Profile a multithreaded application:
You can profile a multithreaded application via Yappi and can easily retrieve
per-thread profile information by filtering on ctx_id
with get_func_stats
API.
import yappi
import time
import threading
_NTHREAD = 3
def _work(n):
time.sleep(n * 0.1)
yappi.start()
threads = []
# generate _NTHREAD threads
for i in range(_NTHREAD):
t = threading.Thread(target=_work, args=(i + 1, ))
t.start()
threads.append(t)
# wait all threads to finish
for t in threads:
t.join()
yappi.stop()
# retrieve thread stats by their thread id (given by yappi)
threads = yappi.get_thread_stats()
for thread in threads:
print(
"Function stats for (%s) (%d)" % (thread.name, thread.id)
) # it is the Thread.__class__.__name__
yappi.get_func_stats(ctx_id=thread.id).print_all()
'''
Function stats for (Thread) (3)
name ncall tsub ttot tavg
..hon3.7/threading.py:859 Thread.run 1 0.000017 0.000062 0.000062
doc3.py:8 _work 1 0.000012 0.000045 0.000045
Function stats for (Thread) (2)
name ncall tsub ttot tavg
..hon3.7/threading.py:859 Thread.run 1 0.000017 0.000065 0.000065
doc3.py:8 _work 1 0.000010 0.000048 0.000048
Function stats for (Thread) (1)
name ncall tsub ttot tavg
..hon3.7/threading.py:859 Thread.run 1 0.000010 0.000043 0.000043
doc3.py:8 _work 1 0.000006 0.000033 0.000033
'''
Different ways to filter/sort stats:
You can use filter_callback
on get_func_stats
API to filter on functions, modules
or whatever available in YFuncStat
object.
import package_a
import yappi
import sys
def a():
pass
def b():
pass
yappi.start()
a()
b()
package_a.a()
yappi.stop()
# filter by module object
current_module = sys.modules[__name__]
stats = yappi.get_func_stats(
filter_callback=lambda x: yappi.module_matches(x, [current_module])
) # x is a yappi.YFuncStat object
stats.sort("name", "desc").print_all()
'''
Clock type: CPU
Ordered by: name, desc
name ncall tsub ttot tavg
doc2.py:10 b 1 0.000001 0.000001 0.000001
doc2.py:6 a 1 0.000001 0.000001 0.000001
'''
# filter by function object
stats = yappi.get_func_stats(
filter_callback=lambda x: yappi.func_matches(x, [a, b])
).print_all()
'''
name ncall tsub ttot tavg
doc2.py:6 a 1 0.000001 0.000001 0.000001
doc2.py:10 b 1 0.000001 0.000001 0.000001
'''
# filter by module name
stats = yappi.get_func_stats(filter_callback=lambda x: 'package_a' in x.module
).print_all()
'''
name ncall tsub ttot tavg
package_a/__init__.py:1 a 1 0.000001 0.000001 0.000001
'''
# filter by function name
stats = yappi.get_func_stats(filter_callback=lambda x: 'a' in x.name
).print_all()
'''
name ncall tsub ttot tavg
doc2.py:6 a 1 0.000001 0.000001 0.000001
package_a/__init__.py:1 a 1 0.000001 0.000001 0.000001
'''
Profile an asyncio application:
You can see that coroutine wall-time's are correctly profiled.
import asyncio
import yappi
async def foo():
await asyncio.sleep(1.0)
await baz()
await asyncio.sleep(0.5)
async def bar():
await asyncio.sleep(2.0)
async def baz():
await asyncio.sleep(1.0)
yappi.set_clock_type("WALL")
with yappi.run():
asyncio.run(foo())
asyncio.run(bar())
yappi.get_func_stats().print_all()
'''
Clock type: WALL
Ordered by: totaltime, desc
name ncall tsub ttot tavg
doc4.py:5 foo 1 0.000030 2.503808 2.503808
doc4.py:11 bar 1 0.000012 2.002492 2.002492
doc4.py:15 baz 1 0.000013 1.001397 1.001397
'''
Profile a gevent application:
You can use yappi to profile greenlet applications now!
import yappi
from greenlet import greenlet
import time
class GreenletA(greenlet):
def run(self):
time.sleep(1)
yappi.set_context_backend("greenlet")
yappi.set_clock_type("wall")
yappi.start(builtins=True)
a = GreenletA()
a.switch()
yappi.stop()
yappi.get_func_stats().print_all()
'''
name ncall tsub ttot tavg
tests/test_random.py:6 GreenletA.run 1 0.000007 1.000494 1.000494
time.sleep 1 1.000487 1.000487 1.000487
'''
Documentation
-
Coroutine Profiling (new in 1.2)
-
Greenlet Profiling (new in 1.3)
Note: Yes. I know I should be moving docs to readthedocs.io. Stay tuned!
Related Talks
Special thanks to A.Jesse Jiryu Davis:
PyCharm Integration
Yappi is the default profiler in PyCharm
. If you have Yappi installed, PyCharm
will use it. See the official documentation for more details.
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
Built Distributions
Hashes for yappi-1.5.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2eb4094239c7beb1cc23be7592400cf8d2c68bc84ba061ff3bf998ed5687c962 |
|
MD5 | 41fced2ec81aaba7387dbc29ba321be2 |
|
BLAKE2b-256 | 6627ab1dbb689e3f93ed8c10c80973c4500cb0f6c2ae35eeffb0074ab2d67e9e |
Hashes for yappi-1.5.1-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a204cd8c052eeb528e026e65eae9e9e1c2e1ee9f254ecbdfccc4ce4beee2a98 |
|
MD5 | 1c54abf53b4c6045b6fbeb0e1ce5aa50 |
|
BLAKE2b-256 | 7d90b84c307f39a6ae39b5671d7cc6180561e8349467e79fcfadc4e2d2205ecc |
Hashes for yappi-1.5.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e382662ef846e9c94b1f876bdefe5311be6973d95c205d56a74f7155c4a4f39 |
|
MD5 | ed0691aa9d485fa6a311833468a16951 |
|
BLAKE2b-256 | 60b309a70162319bfbd7a9689cabd836d2d0d2c2e37701d446bbdda0e9e7c0b2 |
Hashes for yappi-1.5.1-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e97d7ac272cf31f2e26eadc5517510268a7cc425b64e15680582550d6a7e9a8 |
|
MD5 | b43e13943904e3b5788de9c2c8f5d51a |
|
BLAKE2b-256 | 3cc7288d177537f156c1ce4b85df15b46c4dfcecf6c537fb7d48c9b013feb10c |
Hashes for yappi-1.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5a29d0dba485f83ebf022dfdbb543e5789d940818709066ee44289fa6f2a1cb |
|
MD5 | d02e5e29fb97852b9adfc14cb9649398 |
|
BLAKE2b-256 | cdcaf845a72c01bebd187b73ac6dfdbe30ce25b1799e4eb0bbb4e968cd97955c |
Hashes for yappi-1.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44dae39dbb74a3c8b42dd0eb66fe1f112aabc264431e43f7337f587054e57ed4 |
|
MD5 | 16b8cb33cf939a8f8583e80a465f85ea |
|
BLAKE2b-256 | 2ad99ccff479c488c1563901cdbf6e977551a835315e2e4b7f35f2f778dbc0cf |
Hashes for yappi-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 945cf6a7dd86340527b6bafc663cc7db550e1b09d9473bcb9ca3a44767e57609 |
|
MD5 | 868cf1eab96daa634175bf67f358daae |
|
BLAKE2b-256 | 2154f1a1bf65af437cf84c87351e815ed67bae88719a2342da4d554fa9ff6bc2 |
Hashes for yappi-1.5.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a117ed88c3dc86ad57a75cee0bac534cab5b74aa9290f452378b7c332b6b15a1 |
|
MD5 | 05dc62d4c5c99f643f0a4b4467d23c4b |
|
BLAKE2b-256 | 2f9f9c0c09be84b4e4034bdedfe39bdd17d7ba776e27e4c4894620a9b6fc07b1 |
Hashes for yappi-1.5.1-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c7622ee1a226d38a798f9f4ca6c9e4b4c0bf6302e9e96cfac2efd79a2d69069 |
|
MD5 | 792e08078ef9bd061a32eb31e2e3d8e5 |
|
BLAKE2b-256 | 5c61c5cc4a8ccb11d04abe2270927fee70c408d968337829dab7bb72fccec3ab |
Hashes for yappi-1.5.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f78652ac969f997cc6426ac0f085f0dc2555ef3616eed30a661790d9beb26d3 |
|
MD5 | a97ebd064b44ef99f8e040f60a2b9612 |
|
BLAKE2b-256 | d9327f1d8a53516a2e53a7a1f64ee83339321941848c35969c43497a26218df4 |
Hashes for yappi-1.5.1-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3fdde958f688c97d7fc23ac2fa60564a84650addd80472383d7f091e4603a78 |
|
MD5 | fb479bc27bf5e0e6fb490a18121658ad |
|
BLAKE2b-256 | e4ffedd52c220ac8215d59045576e00afdc393cfda77fe7196cc837f51a2b743 |
Hashes for yappi-1.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a35f2fe7c1b9b60fe4f2be7345c94b0e40fda5125ca35ecd6ec6f072fb33e49d |
|
MD5 | 23ef0454cf96cbdc16913a3a8b76c4f9 |
|
BLAKE2b-256 | cd2abcbbdfef9838104afcfb4409649e27cb774a7501b6dc9145d2e792296965 |
Hashes for yappi-1.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 573ae3a3ce42518e359f483934042263a8b1784374921f146c33de9beeed7028 |
|
MD5 | 0de3be1369edf62e99f688aa3d4754e8 |
|
BLAKE2b-256 | ef32ec2139d9d9e744b102489cf39dd75c0668a492703d36600e61ddd9fde66f |
Hashes for yappi-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a1d226e65ca12d9895655540938d5046578cd99301e8076d3fb604be7c53f67 |
|
MD5 | 1161d121129d5db400e6357d52ea64e3 |
|
BLAKE2b-256 | 29f35ff5cf85f102affb36dd7b717cb793c61a2add277638a6ad41c2fc5610ab |
Hashes for yappi-1.5.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59ff5213c969c0c35c0eaefc2e9c44b6e54f5e664b480e079f393e06bc5eb4fe |
|
MD5 | a4581f1b89916d271be08d94907f190e |
|
BLAKE2b-256 | 44de54bb7125553ed676aa2052b6ab89b3f80ff1174e396a549071df11c9a675 |
Hashes for yappi-1.5.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58914a724aa2a98b52a2e683ecf2e22210d273f9333f1f26d18ecfb02c229514 |
|
MD5 | 441f4be17a4fb963d576f47afe6388ac |
|
BLAKE2b-256 | 27ea45bd0d7228b58bfe9ef7d9938b390f95259db164d60a649cc2028a983819 |
Hashes for yappi-1.5.1-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a174ce23ef2d97b43f2f8ec923cb1956dc111b94f39fa4bc8df8e3fff8b0aa70 |
|
MD5 | 3667abcc7f98c755ccf1ecf0d1973980 |
|
BLAKE2b-256 | 2b6b086f6c4b0ace947b054037a203dde2b98e83cbd7bcc0b73ee9a32491758a |
Hashes for yappi-1.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e776dec9f6b793c01a14383ce1569edf39aef1b27d413dd0f218540cc8a36bbb |
|
MD5 | 8d4ea97bf067e82d7e44d8dbd09fae4b |
|
BLAKE2b-256 | ec31dd43f4bc4be7b0b772a9892f282d3841de6ebde2e49b50cc56f76f5afae0 |
Hashes for yappi-1.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7a17974234af25617353ea78da06389d99d98898a6ecf16177ad008a9f59a7f |
|
MD5 | bf7803ecf084de92074115e4a66e7a86 |
|
BLAKE2b-256 | d7965c5c6b2e6ad02ad8fcc732af6ab2aa166ae6e088fe3e3dc4c0f1610a82f0 |
Hashes for yappi-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44a2f13ab11aa5c02a239b9456de3df62bd5e7719f416353b506a589f4a3e64e |
|
MD5 | 179964602d129fbad0e5b3277136989a |
|
BLAKE2b-256 | 615108160e452ad64417dd5cf05c0529cfbc8d5988e13d7b7cecdc5f069fa0e5 |
Hashes for yappi-1.5.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf6553261faef553a23bd864f23f3b0970cd7ae007aed2a065e17ad3d0ff60f4 |
|
MD5 | d0b7dac9b0622c5dd712365c3529a331 |
|
BLAKE2b-256 | 435600db888c98411c09e013e2eb99c6497aee897a97e26aa8a1708157dc36e8 |
Hashes for yappi-1.5.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 419e35564bd4e38c83df1dd469d3f71bc93f30ec4393b83afa310bfcbd05d854 |
|
MD5 | 34fee64f9923bd998377e0933cd4ae6a |
|
BLAKE2b-256 | 1d559a135a9a6f805350c1374699774439541da984d5a5a868541c89f7f0c5e5 |
Hashes for yappi-1.5.1-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4701cc2a2b1f0d5a259713d5dd9f47876abec48e0c582ed39b7d2743056575a0 |
|
MD5 | ffb9aa0ba8aceda4d29f50ef18857d83 |
|
BLAKE2b-256 | 65f2639815b0373c3e4fe5403d4cdf96867e0e0a20cbd8cfd6c2f965fa5ccddf |
Hashes for yappi-1.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84433e8800016936ceefd42b9902330d78864fb54f90aa3b399cc7960eeaa87f |
|
MD5 | c6b6d835272f0db4d0f6da3016c71f85 |
|
BLAKE2b-256 | b046727ce7d2dd3bb0a05d20a221352f09a78d2e517e5dc078b2d0e127fbe525 |
Hashes for yappi-1.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eccdca9f79c402c0e37e13a97597e338c7db0867c2b07c9c716a388a0b196e1b |
|
MD5 | 24b78b23e18f2d7c40122ee247b08b2e |
|
BLAKE2b-256 | 411de48c37e9620ff3989b4ee4e98b7f3d80ced1109521b363a8477e3f826bbf |
Hashes for yappi-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66816cb9f4edd3f93c4c03480d636719e6680129ebe0cba0d3076703d7cf06e3 |
|
MD5 | ae6af0825c1befd603895179bf909d1f |
|
BLAKE2b-256 | 6f8ecb50d5c75c19ecd3367554f73caca23c644180aa1312a8b08debaea99112 |
Hashes for yappi-1.5.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d375caccc158c6250892f50a3bf0d42c86288136593eae0c1da50636e8eda28 |
|
MD5 | 3dd5fe6d685d6ee06c10e9c89b75678f |
|
BLAKE2b-256 | 402691e3fc56ce122d37b2bf961f9d12cfb5212d9b8ef6b5edd9693299c2a787 |
Hashes for yappi-1.5.1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c171938abce622744e31bbd01df2bee785e74d26fcf939c8a0aef478ca1bac4b |
|
MD5 | 81c45f1b7d7708de36a8ca606a737760 |
|
BLAKE2b-256 | 46f2688e443eb0b764777e31b1325b7b52621df79b01d46ad31eeee7d8ccd4d2 |
Hashes for yappi-1.5.1-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7b2f301a8a161835f787ce71d42d4c32ef34b64ea2bf10dacb22aba4f2bdcf6 |
|
MD5 | de8622cb0919fb6407cb36051f63c698 |
|
BLAKE2b-256 | 9defb42bc89371f8164e5aa3be96953a2cf00b01b5ef3ac321ea035bd0e1d386 |
Hashes for yappi-1.5.1-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d9657594681f043b943367cace220ddd6ddcb89165fbb1991420e1ed1a8c57c |
|
MD5 | d8a3db615e07bb9e2a98debcb4a4bac1 |
|
BLAKE2b-256 | 8eb49a17761c2bbc05e3d0a95ecbd73a6b59bb9751370362c87fc61b9cbdbd70 |
Hashes for yappi-1.5.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f084c480e9307707dcc6a5449f3e33514bbe14b9ccf306ff21019ae5fd320121 |
|
MD5 | 48cb7603f3b612f1dfed2c66b00f3b1c |
|
BLAKE2b-256 | cc03a1c538c21308852c55750ff305e3be1c89d2fd3af0c0ba583e997a95f1f4 |
Hashes for yappi-1.5.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fab99aecf31539a6671e99927eea9ff1ff31837ee3003f4286614a01c1224b6 |
|
MD5 | 4ea0d52d04d01e1a108a0e03bde973ae |
|
BLAKE2b-256 | 9fe44ecd84a9ccafa544460d56f3c0e1034adf6bf2b87ce8d8a9b0ecdd085235 |
Hashes for yappi-1.5.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a650a77f00c153ed23d88173cadeeed42b2808f409221d268ff39577ea011cb5 |
|
MD5 | 11b1f7e5e73e652ca96e0887cffcd203 |
|
BLAKE2b-256 | 6e160ad1dd9b27ee6b6443659a4b24b36a40449e39669ee3ce6276bc7fdb0b76 |
Hashes for yappi-1.5.1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53a920262ef7f3a08296be2f01ac6f79fd65dee69c7156b284cb5a62460e3a87 |
|
MD5 | aefb2d7fe026794bce95d1c67a38510e |
|
BLAKE2b-256 | 50828207ef31bd5f3e1faacafb24b70a17fe84a431c92edff8c019603cd6ca44 |
Hashes for yappi-1.5.1-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 637b69ebdcea0faca920bf0c0d6ef8258564ea468f12eed40bec6355650bebcc |
|
MD5 | 443f543423b4c68d8b050ef068c3486d |
|
BLAKE2b-256 | 7cac82b7b29eafc9e5fceb105e46b1ccc4815f661f98274ed6a00ef4ce393a80 |
Hashes for yappi-1.5.1-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9518ac3435d41720079a10433719d3647e36719311f41897996e8f80124ef8b |
|
MD5 | bfd444863b9095f4cf95cadb85064e15 |
|
BLAKE2b-256 | 20f498f6b6c136ad753760a49ca5af842ce4ac5be91a412448eb853c650ea530 |
Hashes for yappi-1.5.1-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2bf7e4b37651dca978aa5c50dade3b39cf2d9f0d2e2289cb99590c3c3d6e61ae |
|
MD5 | f0d1e7a2ad9f6675c8efb6c83f39b803 |
|
BLAKE2b-256 | f93010e537f70ee6ae48dade57a5af2b7cc13967dc6ec752953a3b5f157fe89f |
Hashes for yappi-1.5.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bfef5b83fdbe8d9a76f60fa1e05222c4f9f91742bcf2fc071748c72aa447994b |
|
MD5 | 20a32d7f193bc9cec1886932cb73d43d |
|
BLAKE2b-256 | 17ecbbe2eb7fbd91f5dd6477c68cd382abc9d04d3103c08a26acca0a58f67862 |
Hashes for yappi-1.5.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 513f78e697e03d8e000293d101442b564667523953e88ea2164e0e58b61e9ea8 |
|
MD5 | 552a58465e860f6fa447b46f390ab649 |
|
BLAKE2b-256 | 417a6f090be6ae50a726f59d466750f69d5b120f074f17c6b092724052e74bc0 |
Hashes for yappi-1.5.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56216ce0e88e4720a20b3f2f03e15a3e5b2335382630958a2f17e622a4df8342 |
|
MD5 | cbc68f23d94eef8041414527004f58f1 |
|
BLAKE2b-256 | daaaef51b8e1fbc723e252b1e118df736ef0ab7e3fdf5ccab00411f0dd472ae7 |