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.4.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f42a9de88cfcbcd3f05834b4cc585e6e70ae0c4e03918b41865ccca02d2514b |
|
MD5 | 85b6644a61a46b81fe0c7b21bc350bd8 |
|
BLAKE2b-256 | 0f59dda3db561d2463f1a8cb111e78789a712dc62ca230602daadc1c2a607b8a |
Hashes for yappi-1.4.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 987c8f658e1d2e4029612c33a4ff7b04f9a8fbd96e315eefb0384943830ae68b |
|
MD5 | 24c9f5e27bd666f8c4804f70f347460f |
|
BLAKE2b-256 | 413c29e693b1b37d445470568065db0f21d72da0e1eb8dafea8a853f680c5157 |
Hashes for yappi-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01fc1f7f76a43a2d0ded34313c97395e3c3323e796945b183569a5a0365b14a3 |
|
MD5 | 4043be11efd4374b7ea51c1e34cf9c0f |
|
BLAKE2b-256 | dbd885d95b23020a0158353c6028a319e3c25ae4bb94c301a95d269dd4c8bc27 |
Hashes for yappi-1.4.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34aed429e1ef04d5b432bbbd719d7c7707b9fb310e30f78c61d0b31733626af8 |
|
MD5 | e87a46c4df5e6b11cfe5eaf6280702d2 |
|
BLAKE2b-256 | 4790e701febad84130f40ce87a7e7fe1e051ef24d1f6a37a6e10197d54ae7323 |
Hashes for yappi-1.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5cd0ed067b4499fa45f08e78e0caf9154bc5ae28eca90167107b1fcfa741dac |
|
MD5 | 847438992fe2332dd375197ab328fa25 |
|
BLAKE2b-256 | d4404225b3e1f32502f266d07e736997e843d61e9712b5604870579badd8a4e5 |
Hashes for yappi-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 733b4088a54996e7811dca94de633ffe4b906b6e6b8147c31913b674ae6e90cc |
|
MD5 | 4d76629880afc1728bc33bd9403dfb27 |
|
BLAKE2b-256 | 86a08d70bcb317fe72be0e086811ee8f0c88798510286243861010d96ee24109 |
Hashes for yappi-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8bc404a3201ec9dc93ab669a700b4f3736bbe3a029e85dc046f278541b83f74 |
|
MD5 | 8a2f3133bdb209e522cbf9f32ca60095 |
|
BLAKE2b-256 | 140c0b96f1fed8cdaf12ef9d3fab6c4ec59e2a50ac8036d1a4556a313d95143d |
Hashes for yappi-1.4.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a5767d79a44d47a34be469d798ddc56cff251394af1f4fde2463de9359a8c38e |
|
MD5 | bd27a96cf26dcee25b63726bf911080c |
|
BLAKE2b-256 | 92dc524b1df9f52c8f3c837a892379ecbd4a3b12ccf288847d6d8bc74ceec22f |
Hashes for yappi-1.4.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52b82a8ec9d5e86e828fe35821a8482c94ca1dec8a278bb8001d21f2c8af98a8 |
|
MD5 | ba258f8da25122d560cb783a5f376285 |
|
BLAKE2b-256 | 183565116aceee12826a7506d3440d12ea5e3e493c97aed7ea660cb95abd0fff |
Hashes for yappi-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3fb92fe0ea47142275fbe6e5d1daa9685c2e25bfd6a9478c2669e8828b3abf8 |
|
MD5 | 78c69de304bf158b442244b3bcf20268 |
|
BLAKE2b-256 | 43f04eca172532ad08e2f38db1d905d20faa6344b62b7a282b77d6a4e69c7237 |
Hashes for yappi-1.4.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57f9d3a88b822e3727505cf0a59e4b1038de4cd34555749bdc65ac258a58ca23 |
|
MD5 | 98506ed7ba30ed6d1bf550f00ce29f39 |
|
BLAKE2b-256 | cc43f32871aaa94d4d09e884cf93d713219aaf658eb74c5f30ead924f5f676ed |
Hashes for yappi-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8791dbdf17673fb14a6cff150a8b2c85a5e40c455eebb37a62ea4dc74c077408 |
|
MD5 | 57defe54a16698549a8da19a67dd0170 |
|
BLAKE2b-256 | 912372a21cb0b0a07c07e8cc67c8f07df4cbde2d6eb9b97aa423a203d9c4f351 |
Hashes for yappi-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d80262ef4bf8ebd7c81e37832b41fe3b0b74621a24eb853b0444e06b01a44a1a |
|
MD5 | e17c6f654a0cf9da50a7ebec48c0c46a |
|
BLAKE2b-256 | 37d015e809f02e55db19df46d1af41090bb988375c81fcdf5faba090c7576896 |
Hashes for yappi-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71a6bce588d03240d8c05aa734d97d69c595ac382644701eaaca2421f6e37c9e |
|
MD5 | aeb7a1dd116646df0cf2bd3670cbd234 |
|
BLAKE2b-256 | 43f87e0c9559c5df5256b3b60dabb4c58f5cefcc491f80d13db654c868d66b36 |
Hashes for yappi-1.4.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bbdd6043e24f5c84a042ea8af69a1f2720571426fd1985814cf41e6d7a17f5c9 |
|
MD5 | e5b2d6fbfcdffb2d99ae54cc45b866f3 |
|
BLAKE2b-256 | 2daaab4a574409769518b9b8599eeaba260ca33598caa8df061b488b6fdb31ad |
Hashes for yappi-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36eaa02d53842b22157f1b150db79d03cae1cc635f708fa82737bcdfd4aa2bd9 |
|
MD5 | 890c5d13466691e0cefb66ed97c3f822 |
|
BLAKE2b-256 | 5c54275c749fec813f2701afcc90231acbb33e23c71f90a52a8541b9a685daff |
Hashes for yappi-1.4.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a279bb01f9c4b4c99cb959210e49151afd6c76693eca8a01311343efe8f31262 |
|
MD5 | e0d61b0eb73ba5a53e5c71ead1dee01b |
|
BLAKE2b-256 | b09642023609cef2594f5708ac80fe19a5105112ec5660edd76ab7c21e281d8b |
Hashes for yappi-1.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2e4a0af76310957d12ff2d661e2ec3509ee4b4661929fec04d0dc40a0c8866ae |
|
MD5 | 07ee1a8f7cccf9010bf585d3d93dce16 |
|
BLAKE2b-256 | bf15679305db2b3668264dae7231c1b49c385c3fba039a6f4db6394cb4e41804 |
Hashes for yappi-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c81d957b10085ce32bb232896d258e9e87ae4ac4e044e755eb505f1c8eb148da |
|
MD5 | 66ce22a3f067ddc7735adf7da64f917d |
|
BLAKE2b-256 | 58c7938644ade7361112b7d70e3f3278fef122c3d6318c3f01bffcf417acd2ce |
Hashes for yappi-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 61a2c7dc15eeccd1909c6bc5783e63fb06ee7725e5aa006b83cd6afb49a343c7 |
|
MD5 | e9c8c5878e79140687f8bf8ec06d5ccf |
|
BLAKE2b-256 | c2bba5fffcd5b0df00c4f1be9648499511666a419714e439d6b46441acfa0b19 |
Hashes for yappi-1.4.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ab23d95fe8130445f1e089af7efec21f172611b306283496c99089839ef61c5 |
|
MD5 | c645f12cf6bf4714b916bc32a68a36f8 |
|
BLAKE2b-256 | 0e35c15dbdf28cff3ff8a265e007dfabb71c7a6682ec0c0b669f0703a65a52e4 |
Hashes for yappi-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1413d3fb200c0011b22764a227fb9e56e479acb1ec2b7c134c62d70a76a7e1f2 |
|
MD5 | b393a0d54867ae14050ed6620a9027e9 |
|
BLAKE2b-256 | 4d89941633373706ddfc93b7dfb40cc863d0ec144483ac313f3aa67f81f509e3 |
Hashes for yappi-1.4.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec8ada826232137560e6ac7644ace8305b4dacbca0f9fff246ffee52db0a3c3a |
|
MD5 | 305c7eddec9498f670ac9eaabdce30af |
|
BLAKE2b-256 | e4d610fdc5b2fdd1f23b8c9f81d7a4c62e70e676ff4d313659153de27bbc75d5 |
Hashes for yappi-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5092940caea4cc150ba21d9afbafc8b00770f33ab5de55638c2bbd2c6f7f82cf |
|
MD5 | d4052d26030b84593fa43b62f6bcb746 |
|
BLAKE2b-256 | aa44a0fce2e98785d04075d35b21197319e5523eb575da3e91a92250f0d8513b |
Hashes for yappi-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aef7a5bd5cd7e36adb90419984f29809eee51c9a9b74849b9dfa6077075da21f |
|
MD5 | 46e518323dbab38f6588516a17197428 |
|
BLAKE2b-256 | cb92298f6a8f18cc211f21082b5c9575bbcce64a7f3a1825b5eb1e7fce1c65e8 |
Hashes for yappi-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b286c4fcc72812adbd19280329a3c0144582abd1e5a3513d93a8bb2d3d1abaa |
|
MD5 | 4a3eb1a048983c58d84ee72377013045 |
|
BLAKE2b-256 | a154b1fd8c68885e072d1e906ae7fbb8966051226e700a92a6899a93c75d0078 |
Hashes for yappi-1.4.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e4de1137021f80a238217444c0ad5f0e393082f4744ecae3d92eb3a9b98ca3e |
|
MD5 | 5df42ac193b10781f05ad8ef97236647 |
|
BLAKE2b-256 | dcf9699665351b9f2d81a43c1f30029a8b9ac59c070c26535640d2dcf4543a3f |
Hashes for yappi-1.4.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 407b119f394ab60bb0a3d07efcb92d4846ef40ab40fff02c8902ca8d800f85d3 |
|
MD5 | e190cd8fd88b50a1073f1b66c9bacb29 |
|
BLAKE2b-256 | eec3f9748a9a8494829b10cea6a0a8738e49f6cc75401f81d18824759524ded8 |
Hashes for yappi-1.4.0-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14068a34907f4e7404b6b87a7bda2d55be2bde4d4d7f9e254b2cd26187cc2ebc |
|
MD5 | 34444197a33121dfd903ffe9e1459dc5 |
|
BLAKE2b-256 | 094097d09ae960952b106b30fa24e134d81a4377321d5050e19b931bd8f0a393 |
Hashes for yappi-1.4.0-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 194a565ab0145ff10e31389fb364a35a4f5160ad6af17362355592cfddf2ae6e |
|
MD5 | 4efce48206991464d1de658099b1bcb4 |
|
BLAKE2b-256 | 0f0db2e807e4ddbda96f725ec03e92d0b92713f579a2ab57c0f3a8bff98f94d0 |
Hashes for yappi-1.4.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ab8c17980e6bdb522b03b118f6d62362c92f7be40a81a4e89746d0eeae1e3ab |
|
MD5 | e9d4a819217dfda4674c508758dec1c7 |
|
BLAKE2b-256 | 73d39cac93663981efe48f1e6769ce01561066a6b2bc45a9b104ced95d0f9f8c |
Hashes for yappi-1.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bad0766003eaa683e56f77166d4551c2f7530ec13aa602ada5cd8ddfe130d42b |
|
MD5 | ce3ff7417adbf7eeca633a9e62a75a62 |
|
BLAKE2b-256 | 763aa4a19cf326c592491b2676422d416e1e549c649f25923e61f1f4cc254f0b |
Hashes for yappi-1.4.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d878f66d0b5d79396d6f034f8d89615517a4c4410e97b84d48402e940f9501d5 |
|
MD5 | 5cc1af47c62425e73fad647fa00e3435 |
|
BLAKE2b-256 | 2fa42f7e60e9ba36dfb127f6d7339cedd495db700cdca643f1145998e99384c0 |
Hashes for yappi-1.4.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64529504c5522b1c8c79eeb27a68f84979ce9415150c32cd7e06618383443bcc |
|
MD5 | 9df7ad782614e0d9e29dcdb7ee3364aa |
|
BLAKE2b-256 | cf92fc52faa184f7851c080e3b440cb45961551fb2d932d65472fe31cc7bf00d |
Hashes for yappi-1.4.0-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 89d352ea770860617f55539e860440a166c5b9c1a67a7f351fed4030af9943b0 |
|
MD5 | 2fd95ad9c44a091a98146bb5eb5fec17 |
|
BLAKE2b-256 | fc230a3cd33c11a796e354a356ad3239c0217ef8d286e74d294a264662f43fcf |
Hashes for yappi-1.4.0-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e5d5a95a8681dc91f5a22c81d458109dcbcd718a551b647d28075574dfb8cbb |
|
MD5 | 30a136dbb67090e4b0eecbeeb910911c |
|
BLAKE2b-256 | 1198f643b493fbb93195ac64a8ac88fc4b8decbbcdcd7ea2511f1fcf66118fc3 |
Hashes for yappi-1.4.0-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a9652e7785f4b4c8bb3a8fa9ee33adf5e3f6dd893de4465008f75b1306f7895 |
|
MD5 | b5315dea6759fc06b73fb24eade9fe35 |
|
BLAKE2b-256 | 3c7f26c8dc9cbcf5c60ec23d70356b2085763f8a2ac60e966b47081adc55596d |
Hashes for yappi-1.4.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42ddd97258604bb1bea1b7dce2790c24f9b9bca970d844cb7afe98a9fbbf1425 |
|
MD5 | aa44711286a889b2f30dfda472ee262b |
|
BLAKE2b-256 | e2f6920783681160ae12ae8807887d8543163e202037f2d1803eedf238090865 |
Hashes for yappi-1.4.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3033cdbd482a79ecafcafef8a1a0699ad333ee87bc7a28bd07c461ef196b2ea3 |
|
MD5 | b2f49296e8ac58bcb2553eeab41909b2 |
|
BLAKE2b-256 | 9ab0d6c0096502365ca9a19bdf714c0001c410e10bc18ddda8cbdd46b9c37bf1 |
Hashes for yappi-1.4.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3bb2d75620ac9ef69f11c62e737469ef155e566e51ed85a74126871e45d2051 |
|
MD5 | 36c1113a8d21402dbd1affcbf3d6e166 |
|
BLAKE2b-256 | 3b5446363860bfc738a7c5b927724e494764989c36e7be3a8e71846b80cf2191 |