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.6.0-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdaa263ba667aac9bf7bdc0d96fd10e2761a287f01fe87dc136f064ab7696af3 |
|
MD5 | 1077537a6923b36ec8c4fda3b0109e81 |
|
BLAKE2b-256 | 6d6f4912ff46803c3227e4f60e35f46edd1dc4ca0b8ec3bc7569a432fc41f09f |
Hashes for yappi-1.6.0-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6797f189b7b89154d6c7c53ac769a22f0adb7bd88ea5b8f6c65106a286afad6 |
|
MD5 | c05e1b74c67c38305ffef35c236ff4e2 |
|
BLAKE2b-256 | 2edd421846a02bfcf69da82b280e04363f6e492ffdaae081dfc5949c0547a681 |
Hashes for yappi-1.6.0-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d58e60aac43041d109f0931917204ef02ac01004b9579fe173f2847fbc69655b |
|
MD5 | 2e582e4f24539fbbd905ef9a957d40fe |
|
BLAKE2b-256 | 9f08cfa1bb2ccadb9ec8955f703e61b0da7f8f0da0953cf8ad1d51621acd33ef |
Hashes for yappi-1.6.0-cp312-cp312-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 677d992c41b239441eee399ac39ea7601010ddb5acb92bf997de7589f9ee2cc1 |
|
MD5 | 84f5ad5ca1785e22e6012a775c2767d6 |
|
BLAKE2b-256 | b9403f9f202877912242dc107be86d0ed9e8212ec8f5d7f85d465b93594efd17 |
Hashes for yappi-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c12da5f310d81779056566259fef644a9c14ac1ec9a2b1b8a3fc62beb4ca6980 |
|
MD5 | 24e47e94246d3d5672d364fb2e8dae5d |
|
BLAKE2b-256 | 35636077b8fdb2fda67dbffbe382da2e847e3c1b0e81fff6652ea3719221d402 |
Hashes for yappi-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb5bbb4c6b996736554cb8f41e7fb6d5ee6096b7c4f54112cce8cf953a92c0a4 |
|
MD5 | 05a88828d2a919564090e15a800cf1ce |
|
BLAKE2b-256 | 8fecff2d2a795c27cf629597839592fc0ee745ff37a9b3f27d6304432d8455df |
Hashes for yappi-1.6.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ba7d12c18bc0d092463ad126a95a1b2b8c261c47b0e3bd4cb2fd7479469141c |
|
MD5 | dfafef6b9c1455ccb35e8b332d6596b9 |
|
BLAKE2b-256 | f88f9c6803c7efba59882364489c1dbe7d76f5cc758a46279a12c6d050b75975 |
Hashes for yappi-1.6.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ddbe1475964f145b028f8bf120a58903d8f6c7bdd1be0a16c1471ba2d8646ca |
|
MD5 | 78ef47b456b753d88cd11ddca5500913 |
|
BLAKE2b-256 | 45d689fef6f114b420749e15e2151e3249c5428c0bc91c6b203fa80856640269 |
Hashes for yappi-1.6.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 88dee431bba79866692f444110695133181efb2a6969ab63752f4424787f79c8 |
|
MD5 | 68bffa6be5988085388c4276163dd7e1 |
|
BLAKE2b-256 | 61c989893541fd383c33c37f5873cf837d508d8d007d82dc72efedec484b7137 |
Hashes for yappi-1.6.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4959c1dcfb6da8441d05915bfbb9c697e9f11655568f65b87c341e543bd65d5 |
|
MD5 | 47876c754a8f7d19ba070d909fba42a3 |
|
BLAKE2b-256 | 46e10393228e83df0b45cf8bae4bd25145308e3d487716c9b1d156684e05e4a9 |
Hashes for yappi-1.6.0-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | acfbf4c80b6ee0513ad35a6e4a1f633aa2f93357517f9701aed6ad8cd56544d4 |
|
MD5 | ef1a4fb9ee6dfde8af038cf1313b4f53 |
|
BLAKE2b-256 | b11e1bd31a66dce128e292f577e18aa98b38328b47378ecc18d8bf9c7771f54a |
Hashes for yappi-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2cefe387bc747afcf0b26c9548e242113e17fac3de2674d900e97eb58a328f6 |
|
MD5 | d18461ade44a61b9035334919ab3d039 |
|
BLAKE2b-256 | bab8767db975aa34dc50696ccef2b386725d087ec9931c45176999dc9317b49f |
Hashes for yappi-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a1cb70d46827a137350fb84b8fddecd7acec0a11834c763209875788b738f873 |
|
MD5 | 73d3a32cbcf76e1804da8d6d9586560d |
|
BLAKE2b-256 | e3c72e928c539c3eb52878c4fe7076e855594c113a7f72b45f93cc6a1c92f417 |
Hashes for yappi-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9bc33b8ec9bce8b2575a4c3878b3cd223d08eb728669924699e5ac937e7b515 |
|
MD5 | c71f2ca19029828f286ec9384f857f58 |
|
BLAKE2b-256 | ee55b68592034563f035393647ae6e8e304cedafbd4d4e3263cd6a2fe0c8dcca |
Hashes for yappi-1.6.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cd7453e99ebf56491254b0f4c28ae95c5e0ce55043eb17d1ab02c974cbd7416 |
|
MD5 | fa61556e899176bf47c437214fe670b5 |
|
BLAKE2b-256 | 18795fe12f54eafb3b174b437176d33d5061f7ebdf98e97ddc9ac935346ab0e5 |
Hashes for yappi-1.6.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b42f7934fe96fd330488f9def51dd8e2fecc5cc9a71dceab8a27a41406b31332 |
|
MD5 | cccdd81afe38ff184922c4252229fec2 |
|
BLAKE2b-256 | 857b7d8de2f5e819efdaad1dbb05caaa6274c7f3ca78ac54feb51e125e22bb4a |
Hashes for yappi-1.6.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 830ffb677b7a9f9886bc7789e9cb75d5b3ad9af5f43d56d48e56431f92f04bcc |
|
MD5 | 31819084312cd619db78b9bdd6ece0ce |
|
BLAKE2b-256 | f5ab58a8a6e816226b9c2fca483672aaec7e1c9da180c675f3ea53f96d964ec2 |
Hashes for yappi-1.6.0-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4c7c5de3ae439c53c6c6c98d30d4b063c6fc353428ba3d81b57d91f1c41f654 |
|
MD5 | cf930b938f5bdac1cc47f6f9cdbb735f |
|
BLAKE2b-256 | 41af30dd9236e6f00f6755e2b0d094ab5e15f350e45b1580700e9fa2ff8793c3 |
Hashes for yappi-1.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23c668e9ce87d70b126f73970cff997a2ab1964b947859ee50580af23964a096 |
|
MD5 | e40547e48f9a95ad7b43c3a017b372de |
|
BLAKE2b-256 | c588542d8a629e3878932e1b3b4c28accfb211f00f6ad9ac4d89febfa4c3e833 |
Hashes for yappi-1.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 084688828c0a8c181ebe59bbf15dcd5a5db2f689eada59d5c277b997c4dccf43 |
|
MD5 | 6f1ffb2484ff45d526fb4f3d32cd086f |
|
BLAKE2b-256 | c7e4cde62fca6a8103a0e9e2ef62308ad5daf54f6c3f8330183a6643140982b3 |
Hashes for yappi-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c7c22bb39d3f2f294766f4940848d11b8ad1c43f9cf0a594ed695b07016007fc |
|
MD5 | 0f3febe1738b4d975bb9880bd7b52de0 |
|
BLAKE2b-256 | 15bf79ad05325573100eb89b06870bb0a4b318ef8887a3e4d125c49c5cc2ee9e |
Hashes for yappi-1.6.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6ec9eabc974f9df868faa67461a9d167e9612083f59338f755f4aa61a2552b7 |
|
MD5 | a08b915f4a3d513919217a0ff5141768 |
|
BLAKE2b-256 | 705a6ccc3a87be9d1d32bd740a596c577e0c732b3ed9bf94a134b5ce10151b82 |
Hashes for yappi-1.6.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 474e9f3ba9394c19dd2f7dc257123e3918c178638597d507ee2094f19d938a39 |
|
MD5 | 590cc482c141b6a2821127f599639a9c |
|
BLAKE2b-256 | badd4d688309a994c4ad4bec040fde44fb31254f4461c41560c495ff76dd7649 |
Hashes for yappi-1.6.0-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 237b1ac310ef364db6d2a1817de93a346d1ed98abfa3053810dbbdcab9ca9300 |
|
MD5 | 504c31b0acc848cd2ce4b1436e865f53 |
|
BLAKE2b-256 | 12bd55e0f91f7a86deb92d05737aa42c349c54d5c618083e453147c3092e8cb0 |
Hashes for yappi-1.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4ae77cfe71682beec6f15ddd6dfb5912436c489b38eb2c3355f4481c07b9c4bf |
|
MD5 | a71e038ec4a28600491bbe3ad13f93de |
|
BLAKE2b-256 | 4db484cce08bcffed494b2b7b67b6930ae741d9293b9504f44dd083c437c6fd5 |
Hashes for yappi-1.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b2f8f0877e3b85b6d2074d2fb541085cd519481f3df9c7e7011fc3867c364c7e |
|
MD5 | 602373ddae93350d19e540ab868458ea |
|
BLAKE2b-256 | a2bc90e5dabbc6e07b8507ab15bc26002bdfd8661604539fe0a74f18de23c771 |
Hashes for yappi-1.6.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6678f046e6bffc68ef2d7781f9fc90b932ca6e90ea966371318ed904c4c38b8d |
|
MD5 | e739b8becde1d7fb6d2d7c7fb997b80a |
|
BLAKE2b-256 | 88bab3bef977c94b26117b054bea8018254c70536f3c1caec5648157a5405ccf |
Hashes for yappi-1.6.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 93352217bf560bea09b1cb43a17361bd2d41864698fa7ae46ce1066266c1af76 |
|
MD5 | a99438e56b578ea0afee89398633d36c |
|
BLAKE2b-256 | 78a0b53e02f0c72c17a93ac5a204d5639a8946792126f915c932247e15c0b091 |
Hashes for yappi-1.6.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a3c970f43f6d9bbc7159b535fbef492cb21576c094e77a673362ad827d9e00a |
|
MD5 | 06d7a5c3f7bd0424cff86da1d1f7acfc |
|
BLAKE2b-256 | 68f6c84befe266dba32ea7e223cd3184c345ec8138f6c7f72352e34e5ab248af |
Hashes for yappi-1.6.0-cp38-cp38-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72aff63e74b87ffbf121211246922df9ac5dffc8deabdc6964f5b7f399799d0a |
|
MD5 | 95396cf52c3fa1b2de9264f9b5a3d23e |
|
BLAKE2b-256 | 4a11c664afc3e22ff17c32a0f97871baa82f809a63c05eb44bb753682e0e6b53 |
Hashes for yappi-1.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e37817722a052632de21674ec8acf59645c08df786920362879a76493037c99e |
|
MD5 | 5e69f9555dcd841de46c610044918c7a |
|
BLAKE2b-256 | ba54562413619e23922e805c6e4af665d641ceaf151a008132475bd8ecf8648a |
Hashes for yappi-1.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9ea8dada24af41c11059f70741d8fce707aaf6862a9306f2ab63bde35f0ce9e |
|
MD5 | 99be8a8ac52ff9b931b22e1ee6fc2050 |
|
BLAKE2b-256 | 67feb720fed043f79da38a8c3be02065c6bc0da6a3318f4d24c73a37ef9fe356 |
Hashes for yappi-1.6.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e33c097402e101a51f9963654108e7625853ddc979b562e8381f761cce99ae13 |
|
MD5 | d4e226360bc975712508983611c25bbb |
|
BLAKE2b-256 | 51bad290d3ecf12a083094bdfd5b6a2c52a807cb62991858437117c9acc1e515 |
Hashes for yappi-1.6.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef61f5fed7c19dddad5b7565df5b7bdfa861d51c15b01a90d283c4d3c97c42e2 |
|
MD5 | ac5c6cedaeaa962a84904809e0bf8458 |
|
BLAKE2b-256 | cb898694a75f4414e8fdc33af35c0266af38e0c29f48df453daefc5468a29770 |
Hashes for yappi-1.6.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36278de1ecf3a781322fb5f9511abc0b66bff327ca87a9e868dc2e376ad1b11a |
|
MD5 | 8c1f199feaf4f88c3d4b7d4cf4c275ed |
|
BLAKE2b-256 | b4539feac2942ed22fcdbb396aa68b3ffdfaa30ecb01ab1737fcf1fb94efd311 |
Hashes for yappi-1.6.0-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 31050972159a026876a06b5eec97f2dbaaaa291ebf3cf07a0d5506cce37ef339 |
|
MD5 | 0ae942220a00bf2fd0b1ad1fcc7d9845 |
|
BLAKE2b-256 | 697d45b6822b7688f6ffc257d7b9921f40b8556a62329edfb6777f874e8c1227 |
Hashes for yappi-1.6.0-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e40a872d146ddddae337181f8808aa6c3b37ffa66bd38a18f009b9e2f2c08b99 |
|
MD5 | 49dad5c1473ace804b7194b346599331 |
|
BLAKE2b-256 | ad4f3b78aee57c32fd45f627fcffb7221acc550a7bd729eed51c4441cbbc366f |
Hashes for yappi-1.6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d49f972a8901972b104a2b65953ae8cbe005d5c09e0974422195bb780b2c5001 |
|
MD5 | 7743fcaee6f5a9977bf544b79e1ff38c |
|
BLAKE2b-256 | f695ee5a7ac0fa131fbe76769a3dc80274e3ed235b98384100722624a1e28c73 |
Hashes for yappi-1.6.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30d294a88baffc3cb13a66fe408ecf8973c927fb3498f327df5af7cc657cdc80 |
|
MD5 | df2337d8bbc98a62c2ed0e71c51233c9 |
|
BLAKE2b-256 | 0c98097b05670006d7d687b089f69b84c1792dfaeb2011f345bd93f719d4b8e2 |
Hashes for yappi-1.6.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 638bd2458a6dfaa278e8977a8fdf44c8626003c12d8c94d82338ef8aa6ac245f |
|
MD5 | 0f6ba59ad8cc0bb769b16920576a8058 |
|
BLAKE2b-256 | 3bfb55d90e3a578eefa0e5d499db2862404267f8904bb45b5eeb8679cd11fcd8 |
Hashes for yappi-1.6.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a16dd3fb61cfa7ffeb287312ddfe2a5c61a53693b009d3a7a3f1b8affb9568a |
|
MD5 | 429143fa7542e13c3b3c4e73ba814ec8 |
|
BLAKE2b-256 | 7aef331e25ddf1f68894ec6e721075e3fc4146b6e80fc89184f014d197388c93 |
Hashes for yappi-1.6.0-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9f6ac7cd8797850bb6fb4cef8364ed34051be6f47d7da74be3a9261eef4bbfb |
|
MD5 | 0e84c0a374b3c6be1d39f9e731eb9fb6 |
|
BLAKE2b-256 | 026e370a8fc77946fb3b6d4810070523410e41ad25136a7834f7976f5effec36 |
Hashes for yappi-1.6.0-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c7c2c9048b2f9fbd5da9cc65bdad73571023a30b5c34f62d97d9a7d47cbe9f5 |
|
MD5 | d2bf4d70a81a1298b518abb9872c1e57 |
|
BLAKE2b-256 | 414edcdec0fa321213949a2ad8d9bc3fba5916b987ced28b25dacaafbb5d42a9 |
Hashes for yappi-1.6.0-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fd7d2da3e32f3d029220356e9b5b24754a7cd708d6e3830405e3dc04ec74153 |
|
MD5 | aa7bf8e96eb195da04b8a24b896f7884 |
|
BLAKE2b-256 | 2de6b9b16ee975d4ea2110b6d55a942ffdde5b984cb4b6cd6be55f08e891637e |
Hashes for yappi-1.6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0f82e4895d04d6fd7bed2bea0abcc84271bdd990371cb053132753b6f5afb73 |
|
MD5 | c06dd4693e42dc48af6e672794bcc1b0 |
|
BLAKE2b-256 | 519608e26da0a9c2662677de6169fa125b6464e08c215595bdbd1e862e3a9974 |
Hashes for yappi-1.6.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1a8be1f55875e2120d7cddcb7e98c77a79ed87715d6292874c782fcd7da2c50 |
|
MD5 | a6f956f350fce6e327d585b6d00c21fa |
|
BLAKE2b-256 | bd4bde8941cd1b4305dff45eea6a7e92bff1b07338cbcd0f87e8729c7ea7a7b4 |
Hashes for yappi-1.6.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 819c43539f55a9f40118ab8b3ce7cb743d66f3af63c7ce984c114533f750b263 |
|
MD5 | 9cfd1a4355eba10a50b723734caa431a |
|
BLAKE2b-256 | 892ee8cb3de571b60c749e4c8c918e5457e7c8871a7ef5a0cd4f9110267bf51e |