Cython实现的高速、可重入、乐观锁
项目描述
FastRLock
这是CPython的一个C级实现,用于快速、可重入的乐观锁。它是threading.RLock的替代品。FastRLock是用Cython实现的,并提供了一个C-API,可以通过from fastrlock cimport rlock或from cython.cimports.fastrlock import rlock直接从Cython代码中使用。
在正常条件下,它在Python 2.7中的速度比threading.RLock快约10倍,因为它避免了所有锁定,除非两个或更多线程同时尝试获取它。在拥塞状态下,由于Cython实现,它仍然比RLock快约10%。
这主要等同于Python 3.2中修订的RLock实现,但由于Cython实现而更快。然而,在Python 3.4及以后版本中,stdlib中的threading.RLock实现通过Python API调用时,通常与该包提供的锁一样快,甚至更快。当通过Cython API从其他Cython模块调用时,FastRLock在这些系统上仍然更快。
它最初在这里发布为代码配方:https://code.activestate.com/recipes/577336-fast-re-entrant-optimistic-lock-implemented-in-cyt/
FastRLock已在Lupa中使用了几年,并经过了测试。
它是如何工作的?
FastRLock 实现优化了非拥塞情况。它通过利用全局解释器锁(GIL)的可用性来工作。由于它知道在调用 acquire()/release() 方法时它持有 GIL,因此它可以安全地检查锁是否被其他线程持有,并且只要始终是相同的线程获取它,就可以简单地计数任何重入。这比实际获取底层锁要快得多。
当第二个线程也想获取锁时,它首先检查锁计数,发现锁已经被占用。如果底层锁已经被另一个线程占用,它就释放 GIL 并请求获取锁,就像 RLock 一样。然而,如果底层锁未被占用,它就立即获取它,并通过告诉当前所有者在完成时释放它来基本上转交所有权。然后,它回退到正常的非所有者行为,请求获取锁,并在最终释放时获取它。这确保了只有在至少两个线程想要时才获取真正的锁。
所有这些操作基本上都是原子的,因为任何修改锁状态的线程总是持有 GIL。请注意,实现必须在处理锁时不得调用任何 Python 代码,因为调用 Python 可能导致上下文切换,这会将 GIL 转交给另一个线程,从而破坏原子性。因此,代码滥用 Cython 的 ‘nogil’ 注解以确保不会意外地插入任何 Python 代码。
它有多快?
以下是 Python 2.7 的一些计时,用于以下场景
五个获取-释放周期(“lock_unlock”)
五个获取调用随后是五个释放调用(嵌套锁定,“reentrant_lock_unlock”)
获取和释放调用的混合和部分嵌套序列(“mixed_lock_unlock”)
五个不阻塞的获取-释放周期(“lock_unlock_nonblocking”)
所有这四种情况都针对单线程和多线程的情况进行了基准测试,其中多线程使用了 10 个线程。我还使用 20 个线程进行了测试,以查看它需要大约两倍的时间。请注意,拥塞情况对于两个锁都相当慢,基准测试包括线程创建时间,因此在这里我循环了 1000 次,而不是单线程情况的 100000 次,以获取有用的计时。
Testing _RLock (2.7.18) sequential (x100000): lock_unlock : 853.55 msec reentrant_lock_unlock : 684.52 msec mixed_lock_unlock : 758.27 msec lock_unlock_nonblocking : 860.40 msec context_manager : 2876.00 msec threaded 10T (x1000): lock_unlock : 2210.69 msec reentrant_lock_unlock : 1864.38 msec mixed_lock_unlock : 1963.10 msec lock_unlock_nonblocking : 3709.91 msec context_manager : 2640.32 msec Testing FastRLock (0.8.1) sequential (x100000): lock_unlock : 139.76 msec reentrant_lock_unlock : 137.56 msec mixed_lock_unlock : 140.75 msec lock_unlock_nonblocking : 164.64 msec context_manager : 593.06 msec threaded 10T (x1000): lock_unlock : 1621.13 msec reentrant_lock_unlock : 1807.09 msec mixed_lock_unlock : 1834.21 msec lock_unlock_nonblocking : 1642.06 msec context_manager : 1730.29 msec Testing Cython interface of FastRLock (0.8.1) sequential (x100000): lock_unlock : 19.14 msec reentrant_lock_unlock : 19.12 msec mixed_lock_unlock : 16.81 msec lock_unlock_nonblocking : 14.49 msec threaded 10T (x1000): lock_unlock : 1511.85 msec reentrant_lock_unlock : 1541.96 msec mixed_lock_unlock : 1585.70 msec lock_unlock_nonblocking : 1585.35 msec
它与 Python 3.7 及以后版本相比如何?
这里的结果更加复杂。根据 CPython 安装的优化,它可能更快,速度大致相同,或者略慢。无论如何,直接 Cython 接口总是比通过 Python API 更快,因为它避免了 Python 调用开销并执行 C 调用。
Testing RLock (3.10.1) sequential (x100000): lock_unlock : 138.36 msec reentrant_lock_unlock : 95.35 msec mixed_lock_unlock : 102.05 msec lock_unlock_nonblocking : 131.44 msec context_manager : 616.83 msec threaded 10T (x1000): lock_unlock : 1386.60 msec reentrant_lock_unlock : 1207.75 msec mixed_lock_unlock : 1319.62 msec lock_unlock_nonblocking : 1325.07 msec context_manager : 1357.93 msec Testing FastRLock (0.8.1) sequential (x100000): lock_unlock : 77.47 msec reentrant_lock_unlock : 64.14 msec mixed_lock_unlock : 73.51 msec lock_unlock_nonblocking : 70.31 msec context_manager : 393.34 msec threaded 10T (x1000): lock_unlock : 1214.13 msec reentrant_lock_unlock : 1171.75 msec mixed_lock_unlock : 1184.33 msec lock_unlock_nonblocking : 1207.42 msec context_manager : 1232.20 msec Testing Cython interface of FastRLock (0.8.1) sequential (x100000): lock_unlock : 18.70 msec reentrant_lock_unlock : 15.88 msec mixed_lock_unlock : 14.96 msec lock_unlock_nonblocking : 13.47 msec threaded 10T (x1000): lock_unlock : 1236.21 msec reentrant_lock_unlock : 1245.77 msec mixed_lock_unlock : 1194.25 msec lock_unlock_nonblocking : 1206.96 msec
fastrlock 更新日志
0.8.2 (2023-08-27)
使用 Cython 3.0.2 重建以添加 Python 3.12 支持。
0.8.1 (2022-11-02)
使用 Cython 3.0.0a11 重建以添加 Python 3.11 支持。
0.8 (2021-10-22)
使用 Cython 3.0.0a9 重建以在最近的 Python 3.x 版本中提高性能。
0.7 (2021-10-21)
适配未签名的线程 ID,如 Py3.7+ 所用。(由 Guilherme Dantas 提供的原始补丁)
使用 Cython 0.29.24 构建,以支持 Py3.10 及以后版本。
0.6 (2021-03-21)
使用 Cython 0.29.22 重建以支持 Py3.9 及以后版本。
0.5 (2020-06-05)
使用 Cython 0.29.20 重建以支持 Py3.8 及以后版本。
0.4 (2018-08-24)
使用 Cython 0.28.5 重建。
通过配置指导优化,Linux 轮子更快。
将缺少的文件添加到 sdist。(由 Mark Harfouche 提供的补丁,Github 问题 #5)
0.3 (2017-08-10)
改进 C-API 的 cimport 支持(由 Naotoshi Seo 提供的补丁,Github 问题 #3)
提供 fastrlock.__version__
0.2 (2017-08-09)
将缺少的说明文件添加到 sdist
0.1 (2017-06-04)
初始发布
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
哈希值 for fastrlock-0.8.2-cp312-cp312-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 685e656048b59d8dfde8c601f188ad53a4d719eb97080cafc8696cda6d75865e |
|
MD5 | a64c0d4dedb731b9c7730192d031ae97 |
|
BLAKE2b-256 | 10847ee1705e4079f5eb54bf46d3a7eadf5b684fc2a8dce18a1df013c2d41c55 |
哈希值 for fastrlock-0.8.2-cp312-cp312-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a3dcc876050b8f5cbc0ee84ef1e7f0c1dfe7c148f10098828bc4403683c33f10 |
|
MD5 | eeed710e5f7077e7109695030ccaf724 |
|
BLAKE2b-256 | e1a5a853ca4c0da19d98664ecc36e8104931f63a67e33dd187cb91848783ca94 |
哈希值 for fastrlock-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b22ea9bf5f9fad2b0077e944a7813f91593a4f61adf8faf734a70aed3f2b3a40 |
|
MD5 | f3abc9a14873f0c8172da01afb323ef6 |
|
BLAKE2b-256 | 2102fe8f8e38cb875d1a882ef44bbc181310fde55cdb9046058f150d09c2af9b |
哈希值 for fastrlock-0.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dcc1bf0ac8a194313cf6e645e300a8a379674ceed8e0b1e910a2de3e3c28989e |
|
MD5 | b4254665a84eee6936786d9e9ba6fadc |
|
BLAKE2b-256 | 3eca16355012a2a5a029a524fd1eb8496eb43190f0e35f623a793ef73e16eb40 |
哈希值 for fastrlock-0.8.2-cp312-cp312-macosx_10_15_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 98195866d3a9949915935d40a88e4f1c166e82e378f622c88025f2938624a90a |
|
MD5 | 14d97887daf6d10ec7890dc980edaf76 |
|
BLAKE2b-256 | 0d54b7c516be2039a4aabc4fbbc5d0346b9c4d878222346f7b37b85ae3624590 |
哈希值 for fastrlock-0.8.2-cp311-cp311-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4fb2e77ff04bc4beb71d63c8e064f052ce5a6ea1e001d528d4d7f4b37d736f2e |
|
MD5 | 86884d2ff32263097857c3ffe43f6f9a |
|
BLAKE2b-256 | 8eee1ad545f904ad8cd1ce7598b5af501148749a65dff8b9a7498cf7ceedafbb |
哈希值 for fastrlock-0.8.2-cp311-cp311-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88f079335e9da631efa64486c8207564a7bcd0c00526bb9e842e9d5b7e50a6cc |
|
MD5 | b9e7c65e8ac0274a646a58737f4b4de7 |
|
BLAKE2b-256 | 36af0f0dd7cfc7b202870a6d520b19f8d378ee638cd2b732a330bb16bcc8bc4b |
哈希值 for fastrlock-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d47713ffe6d4a627fbf078be9836a95ac106b4a0543e3841572c91e292a5d885 |
|
MD5 | 9bef17a502ea1189158122bace0ae2b2 |
|
BLAKE2b-256 | ba51d66763b993d4f2bbd816fc37f42b78e9b45e98fc0c141bc8605ce0a21c9d |
哈希值用于fastrlock-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dbdce852e6bb66e1b8c36679d482971d69d93acf1785657522e51b7de30c3356 |
|
MD5 | 8ee1464140e1e23470347b08359bffbd |
|
BLAKE2b-256 | 92d33fce38d4ed16db0936cc39fc7ea06ea0c2398d7033a37e49880edd0a8ca6 |
哈希值用于fastrlock-0.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 75c07726c8b1a52147fd7987d6baaa318c5dced1416c3f25593e40f56e10755b |
|
MD5 | 19d9de0db8f5b4152468108b59a1316f |
|
BLAKE2b-256 | 7f8a24067b0c3e5a0896dbe5e1e547ae176f25b94ce38e21020d1bf78d18d3ba |
哈希值用于fastrlock-0.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c6bffa978793bea5e1b00e677062e53a62255439339591b70e209fa1552d5ee0 |
|
MD5 | f7c53e383361495f463d6298604b6bc3 |
|
BLAKE2b-256 | 4982df877710dd30860c5e858098fa56ce7b6d4ec82f552bfb384e4cd9eadf95 |
哈希值用于fastrlock-0.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ea96503b918fceaf40443182742b8964d47b65c5ebdea532893cb9479620000c |
|
MD5 | ed993718c5a2aee0a8948192cc0cbe28 |
|
BLAKE2b-256 | 58ff653b5b507aa75a962b2fc93bf055d45aa1015b1581b52883052e19abf31b |
哈希值用于fastrlock-0.8.2-cp311-cp311-macosx_10_15_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 790fc19bccbd39426060047e53629f171a44745613bf360a045e9f9c8c4a2cea |
|
MD5 | 91ce4d7b3135f6bc2944a7e7a0677452 |
|
BLAKE2b-256 | 1c0e2324d71832db47e2949f846e80f79a1391a5cb79661cb1111eb23c27c8d4 |
哈希值用于fastrlock-0.8.2-cp310-cp310-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b443e73a4dfc7b6e0800ea4c13567b9694358e86f53bb2612a51c9e727cac67b |
|
MD5 | 4f043841ce3f6d0d6ef54a9325bee4f5 |
|
BLAKE2b-256 | 3da3cc2412acb468e0c59f966de22ea90e8b51f6e6e305251a2d94432a437575 |
哈希值用于fastrlock-0.8.2-cp310-cp310-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e8b49b5743ede51e0bcf6805741f39f5e0e0fd6a172ba460cb39e3097ba803bb |
|
MD5 | 6e3809e431441dc4891fe25af386a4d7 |
|
BLAKE2b-256 | d72d99707885ce625d2a5deb0fcba3eaee86462914d05009ce04cf1cfa5bacd3 |
哈希值用于fastrlock-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9121a894d74e65557e47e777060a495ab85f4b903e80dd73a3c940ba042920d7 |
|
MD5 | 9d57f362de873c2c17cc6c18eaf7cd86 |
|
BLAKE2b-256 | 1292ced328dd5ee079823c95d199c311eaa3b9eb44807832d8e5370ae9224894 |
哈希值用于fastrlock-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 43a241655e83e4603a152192cf022d5ca348c2f4e56dfb02e5c9c4c1a32f9cdb |
|
MD5 | ef44a5b9a54c6444e86ca9ea3acf1d94 |
|
BLAKE2b-256 | 2b7a519dda6365ceb81f35be4e3b26187ebc8aa8865679675b92a1547f3ca9f2 |
哈希值用于fastrlock-0.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 08315bde19d0c2e6b06593d5a418be3dc8f9b1ee721afa96867b9853fceb45cf |
|
MD5 | e6dcd31d3beafc6f453ebea10f8cc292 |
|
BLAKE2b-256 | bc5dd1f89b59f5b4b4710fd126e0df31ca4c58f46fc0a831058fc49010972d3d |
哈希值用于fastrlock-0.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 27786c62a400e282756ae1b090bcd7cfa35f28270cff65a9e7b27a5327a32561 |
|
MD5 | 52853242786cd87424d3cd1299269913 |
|
BLAKE2b-256 | 526615aa713925023b3eb8970f46acd3b2f02ec0b5137a418cad5250cbe8cfdc |
哈希值 for fastrlock-0.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 11bbbbc526363955aeddb9eec4cee2a0012322b7b2f15b54f44454fcf4fd398a |
|
MD5 | 9e9c65a58b39a1ad2cc45a9c777190ff |
|
BLAKE2b-256 | 39c129cbea3399fe108007df72198e9e0cba8f081eefdba10edbd5bc208fe5ac |
哈希值 for fastrlock-0.8.2-cp310-cp310-macosx_11_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e9904b5b37c3e5bb4a245c56bc4b7e497da57ffb8528f4fc39af9dcb168ee2e1 |
|
MD5 | 00d8a38c35842547770a7f565422da34 |
|
BLAKE2b-256 | 6ad705d9a697abf348bf73b5260fb1b89f539376b2bdec97d423fd20bf1e783a |
哈希值 for fastrlock-0.8.2-cp39-cp39-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e27c3cd27fbd25e5223c5c992b300cd4ee8f0a75c6f222ce65838138d853712c |
|
MD5 | 37a1a478a2b07e136dcc693cf6b08c4a |
|
BLAKE2b-256 | 35ef373bc3c5aa69d9f788d484201f5e22fdd2aa73c294dbc2961dc53f6a9277 |
哈希值 for fastrlock-0.8.2-cp39-cp39-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ff75c90663d6e8996610d435e71487daa853871ad1770dd83dc0f2fc4997241e |
|
MD5 | a87c63dea496284951091601dcc38240 |
|
BLAKE2b-256 | 8a1abd0928b10155d09a3b3130c06488e2783883bb6a72ec514c5091a747201d |
哈希值 for fastrlock-0.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | adcb9e77aa132cc6c9de2ffe7cf880a20aa8cdba21d367d1da1a412f57bddd5d |
|
MD5 | 0882fd5e3286517ceae5e035aab93646 |
|
BLAKE2b-256 | d6da6ec58d50149af1a0a8b410e845501170b0f2370b11921647bf8e60468a7f |
哈希值 for fastrlock-0.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7269bb3fc15587b0c191eecd95831d771a7d80f0c48929e560806b038ff3066c |
|
MD5 | 2535faf95a0dd33fad5ac7b7f1ef1adf |
|
BLAKE2b-256 | c9dc957b0934bfca8045b41e66ed998bf242f7ed7f06eed0c5cc0d797fc5c6b0 |
哈希值 for fastrlock-0.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4d63b6596368dab9e0cc66bf047e7182a56f33b34db141816a4f21f5bf958228 |
|
MD5 | 971adf67e027c63ecdd88a910f50998f |
|
BLAKE2b-256 | a80bfde26e4e220fd9351ba1e1da61d8a8f3db30ee091b1d56d74fbb219f4971 |
哈希值 for fastrlock-0.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 99dd6652bd6f730beadf74ef769d38c6bbd8ee6d1c15c8d138ea680b0594387f |
|
MD5 | c6ce6c6d1aed68463fb079e760a296c6 |
|
BLAKE2b-256 | 91e3df5d25687f94df24228f2a927aaf98334507849cbf715a75d079e6bbb80f |
哈希值 for fastrlock-0.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9af691a9861027181d4de07ed74f0aee12a9650ac60d0a07f4320bff84b5d95f |
|
MD5 | 1d0ef6a4a13ef7e59498d385bfcde611 |
|
BLAKE2b-256 | 2c8e8be52367f04ef0a3504010bed39b57c459114ea170f1be8821ee37b085ed |
哈希值 for fastrlock-0.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2587cedbb36c7988e707d83f0f1175c1f882f362b5ebbee25d70218ea33d220d |
|
MD5 | 14557049a00353de0fcf060855aef5c1 |
|
BLAKE2b-256 | d8cbf75c4eb5de5edf43e4e41dfa604512c24d1f9387746803dfbc2649888d08 |
哈希值 for fastrlock-0.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a3b8b5d2935403f1b4b25ae324560e94b59593a38c0d2e7b6c9872126a9622ed |
|
MD5 | f6f7a4713830bce70a5273f03961fe60 |
|
BLAKE2b-256 | 94acee89216a056842005b5e35b4354734ef20e86e173628a78dd5b6612da2c9 |
哈希值 for fastrlock-0.8.2-cp39-cp39-macosx_11_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ddf5d247f686aec853ddcc9a1234bfcc6f57b0a0670d2ad82fc25d8ae7e6a15f |
|
MD5 | 29838f96704cfa48064d378fdde940c5 |
|
BLAKE2b-256 | 7edca0f4bbf958bb5d2731c71eb2e51102c36d0539930b4c0eb2f7990489d4dd |
哈希值 for fastrlock-0.8.2-cp38-cp38-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 30bdbe4662992348132d03996700e1cf910d141d629179b967b146a22942264e |
|
MD5 | 10429fa5d3ffdee76a29ffec72221731 |
|
BLAKE2b-256 | 860cb3a4dcd609b632772029b439dc31bed764e856deec8b9ac653ede83c7000 |
哈希值 for fastrlock-0.8.2-cp38-cp38-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ebb32d776b61acd49f859a1d16b9e3d84e7b46d0d92aebd58acd54dc38e96664 |
|
MD5 | 6fe04acf4d6a7e81e513bdb525001322 |
|
BLAKE2b-256 | 0489fad0e42357063be1af926dfa07dc24df0459eeeb394a4afb0467cba2bd3f |
哈希值 for fastrlock-0.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 73426f5eb2ecc10626c67cf86bd0af9e00d53e80e5c67d5ce8e18376d6abfa09 |
|
MD5 | 147dbe6053144cf34ed41bb1f56a562c |
|
BLAKE2b-256 | 37e92140db63fd0bd663f9b9136557e0e3c0425614721e9b6c2a874e6e196631 |
哈希值 for fastrlock-0.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c393af77c659a38bffbca215c0bcc8629ba4299568308dd7e4ff65d62cabed39 |
|
MD5 | 5789fb258efd00c4cab112bd5c532d2a |
|
BLAKE2b-256 | 8d5fe0da7388eea6e7e94416384b7c073c2de3178e563d3a1e36676c3918ba91 |
哈希值 for fastrlock-0.8.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d34546ad2e4a480b94b6797bcc5a322b3c705c4c74c3e4e545c4a3841c1b2d59 |
|
MD5 | c6ad0be9815ec2429c8cb7ed7c94eb1e |
|
BLAKE2b-256 | c78815739ed0147dcdee0fdd8829ade585673eccbdb26afbe8f3bda442e579d3 |
哈希值 for fastrlock-0.8.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 87f4e01b042c84e6090dbc4fbe3415ddd69f6bc0130382323f9d3f1b8dd71b46 |
|
MD5 | 0cb86e7e1208bc55e4262a4be9a6828e |
|
BLAKE2b-256 | 92250212242253047f5fa97a67c92c512475d0f3fba9d29547552f97e6a29a2d |
哈希值 for fastrlock-0.8.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ad1bc61c7f6b0e58106aaab034916b6cb041757f708b07fbcdd9d6e1ac629225 |
|
MD5 | b367b63da7f9e88d4cb0c1d4f7fce83a |
|
BLAKE2b-256 | 351773548240545bb5d618479d86b6f8003de208ec260d820fce298afe333de2 |
哈希值 for fastrlock-0.8.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8c1c91a68926421f5ccbc82c85f83bd3ba593b121a46a1b9a554b3f0dd67a4bf |
|
MD5 | 0d540efa6da92a25781b84fa5cb12b9e |
|
BLAKE2b-256 | 73485b49cbeb5674cfc93824e7314a9e6c7f77e34354d647875a037716802d5d |
哈希值 for fastrlock-0.8.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 320fd55bafee3eb069cfb5d6491f811a912758387ef2193840e2663e80e16f48 |
|
MD5 | 13bda318d922679451fe886379ce02de |
|
BLAKE2b-256 | f1e28d7ad647fb65753837f942bc3bdac33b71f5d2f7ee516cfdba85b0a3da8b |
哈希值 for fastrlock-0.8.2-cp37-cp37m-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b8ca0fe21458457077e4cb2d81e1ebdb146a00b3e9e2db6180a773f7ea905032 |
|
MD5 | 0015fe4b14f9b3bf7768f72c1fd1ff17 |
|
BLAKE2b-256 | 3f9b45c5852b2f1868ce3c6676c6264e28b53093cb9c521dbfbb8a305438908d |
哈希值 for fastrlock-0.8.2-cp37-cp37m-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5dfb78dd600a12f23fc0c3ec58f81336229fdc74501ecf378d1ce5b3f2f313ea |
|
MD5 | e203822fdff0b0f08d5e5180a9867657 |
|
BLAKE2b-256 | cb76ef76214cf55267eca9a818caaeed0e45a57ee0fe598fd129a3137ce1580b |
哈希值 for fastrlock-0.8.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b2a1c354f13f22b737621d914f3b4a8434ae69d3027a775e94b3e671756112f9 |
|
MD5 | 7b8036758dfb87192bc16fa65e54761a |
|
BLAKE2b-256 | 5b9a018bb51a385c34cd3cd427fddf556e9eb9d3c75d32c5047f8ffb6a2059c5 |
哈希值 for fastrlock-0.8.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 59344c1d46b7dec97d3f22f1cc930fafe8980b3c5bc9c9765c56738a5f1559e4 |
|
MD5 | a134f70edd7a53a584510c1c7b46746e |
|
BLAKE2b-256 | 42261df8a5967fc9482e6f7f9013632cb6dabc8d505fe67897ed6697196a144b |
哈希值 for fastrlock-0.8.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 643e1e65b4f5b284427e61a894d876d10459820e93aa1e724dfb415117be24e0 |
|
MD5 | 7f20dfaedf159b8fd90e5f8d4c478579 |
|
BLAKE2b-256 | 53263d74f6f62c88c67d4fe7573b81186c4224f50f858f98ea53431519a2a8f0 |
哈希值 for fastrlock-0.8.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | eb31fe390f03f7ae886dcc374f1099ec88526631a4cb891d399b68181f154ff0 |
|
MD5 | 564722e9663ca2c8f4e35bd7fb06f760 |
|
BLAKE2b-256 | b2c9a8ae361f84f51a07429d71215660dbf9eb243cadaca1ec54765afc39bd9c |
哈希值 for fastrlock-0.8.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 067edb0a0805bf61e17a251d5046af59f6e9d2b8ad01222e0ef7a0b7937d5548 |
|
MD5 | 3c691dd2e8e8936df75252d335b9db27 |
|
BLAKE2b-256 | 424e8bff5aa98ba1406c23a7dded13fea0bf2f536b4f8f7096fcbea0303e9cf5 |
哈希值 for fastrlock-0.8.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b15430b93d7eb3d56f6ff690d2ebecb79ed0e58248427717eba150a508d1cd7 |
|
MD5 | c30d4d65acd4169e81d2092beab3f6e5 |
|
BLAKE2b-256 | cafb274f6576c93847ad2b08e71badf8aafd4710603f37e6f42e24857cd039d1 |
哈希值 for fastrlock-0.8.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cf81e0278b645004388873e0a1f9e3bc4c9ab8c18e377b14ed1a544be4b18c9a |
|
MD5 | 977d5a1e2c3be03e504412ccb79e8b98 |
|
BLAKE2b-256 | 44ae326eea966d5601327b90d05ee2a4704d4bc976d4b58b665458a9c202ccd5 |
哈希值 for fastrlock-0.8.2-cp36-cp36m-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5460c5ee6ced6d61ec8cd2324ebbe793a4960c4ffa2131ffff480e3b61c99ec5 |
|
MD5 | 0dd6231eef10726e8f79e49b6d6b0d0e |
|
BLAKE2b-256 | 2dd2728a3486e0dddd3eef35ff4fcd40ea819f56509299c26c4efff6ecd588b7 |
哈希值 for fastrlock-0.8.2-cp36-cp36m-musllinux_1_1_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2c1719ddc8218b01e82fb2e82e8451bd65076cb96d7bef4477194bbb4305a968 |
|
MD5 | da82f1bcd30f23c191ae105e65ac7711 |
|
BLAKE2b-256 | 23f6b699130ffaecba175351d4b2cef7053ae9ad8a4936dba8c20bde83f6fab5 |
哈希值 用于 fastrlock-0.8.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b32fdf874868326351a75b1e4c02f97e802147119ae44c52d3d9da193ec34f5b |
|
MD5 | 8573c061e0c89d41b11df58bc428694b |
|
BLAKE2b-256 | 8993eadeecc28efb476801af85c1c073dbab4d4e6c0686a324a8548aa8787f71 |
哈希值 用于 fastrlock-0.8.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ab91b0c36e95d42e1041a4907e3eefd06c482d53af3c7a77be7e214cc7cd4a63 |
|
MD5 | 10a03336534107630f158c123f27c1ef |
|
BLAKE2b-256 | a5294f76b8b528e307c816b59428e11bd4ced190dc3025524ffe738092e3be67 |
哈希值 用于 fastrlock-0.8.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 25945f962c7bd808415cfde3da624d4399d4ea71ed8918538375f16bceb79e1c |
|
MD5 | f44c1526d2aed3ea885a489c7f89e1a6 |
|
BLAKE2b-256 | 8f076a7da697c5f63b44e0d063ebe0b72d3120d3b8dfac5d85788a2e145463cc |
哈希值 用于 fastrlock-0.8.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e380ec4e6d8b26e389713995a43cb7fe56baea2d25fe073d4998c4821a026211 |
|
MD5 | 42ddf093ed2626560a388eb69ac29a30 |
|
BLAKE2b-256 | a129ce6905d0c7ee6b2b0c43b664374bfc01f527c19eefc4a505530de46ce0fe |
哈希值 用于 fastrlock-0.8.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_24_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1fed2f4797ad68e9982038423018cf08bec5f4ce9fed63a94a790773ed6a795c |
|
MD5 | 956dd9545f97536c75e54ffe88a81323 |
|
BLAKE2b-256 | c648b8fa41288053e003c435247d7d0940794219a2d68edda258f49ecc1be262 |
哈希值 用于 fastrlock-0.8.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4fb04442b6d1e2b36c774919c6bcbe3339c61b337261d4bd57e27932589095af |
|
MD5 | 38b81fab507972a528a113c3840b7b69 |
|
BLAKE2b-256 | 8cbb8fbed1b7bf980631166941bb11b1e8e75e714e65e340bc45401a40e4a1a7 |
哈希值 用于 fastrlock-0.8.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_24_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2074548a335fcf7d19ebb18d9208da9e33b06f745754466a7e001d2b1c58dd19 |
|
MD5 | e78e7caae9a2ef40ea64c6d1cf1bd696 |
|
BLAKE2b-256 | 58d4939f9b5a0fe0c4ece6f154c761a068c1976e0ac229883a22d6cb651b2cb7 |
哈希值 用于 fastrlock-0.8.2-cp36-cp36m-macosx_10_15_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 17734e2e5af4c07ddb0fb10bd484e062c22de3be6b67940b9cc6ec2f18fa61ba |
|
MD5 | 9f6f8964a9707419f8adc9964c0ed15e |
|
BLAKE2b-256 | 7a8e84a90880b65b36707ab31e58028def2e97923adaac96124ea875b6d9b826 |
哈希值 用于 fastrlock-0.8.2-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 66f2662c640bb71a1016a031eea6eef9d25c2bcdf7ffd1d1ddc5a58f9a1ced04 |
|
MD5 | 33d3dda80b315d1e5b89c4ee1149bbe6 |
|
BLAKE2b-256 | fe3d179fabdc07b80e002239c81666ff80714f925dcea1672985e5017e2c7071 |
哈希值 用于 fastrlock-0.8.2-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ccf39ad5702e33e4d335b48ef9d56e21619b529b7f7471b5211419f380329b62 |
|
MD5 | b3cf58e1c133bde41edf75c1fdfcc3eb |
|
BLAKE2b-256 | 73b1950738595329d93085319d16333ae4d7369a0a7655ab6d857015ebf3f05a |
哈希值 用于 fastrlock-0.8.2-cp35-cp35m-macosx_10_15_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a74f5a92fa6e51c4f3c69b29c4662088b97be12f40652a21109605a175c81824 |
|
MD5 | 075a1fc7bf122af160b7e4e6b48947f3 |
|
BLAKE2b-256 | 77abc26259eebbdaec53c18ed4a1b60486753ac41daf1d225e031f95f5511af1 |
哈希值 用于 fastrlock-0.8.2-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 31a27a2edf482df72b91fe6c6438314d2c65290aa7becc55589d156c9b91f0da |
|
MD5 | 9ffb16e8dc1344974df6b1a10c0d7673 |
|
BLAKE2b-256 | 91999601c3e32896aa80f5608256fb3d289641441eb96d5199dfa94787524645 |
哈希值 用于 fastrlock-0.8.2-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7a2ccaf88ac0db153e84305d1ef0aa138cea82c6a88309066f6eaa3bc98636cd |
|
MD5 | 37d800fb189107d4011d247d2a9b3987 |
|
BLAKE2b-256 | f8172eb680c5f73bfc2480f51ce21c068a5064449932abbcbf7f66e5b9355dff |
哈希值 用于 fastrlock-0.8.2-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e4bbde174a0aff5f6eeba75cf8c4c5d2a316316bc21f03a0bddca0fc3659a6f3 |
|
MD5 | f11bf289adc8bd82adf48834df8bfe76 |
|
BLAKE2b-256 | 3ce11eabd0358e8d02d8f274f0afa657fa7822d1fc20b3bc9a2eff0c245809a8 |
哈希值 用于 fastrlock-0.8.2-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2d5595903444c854b99c42122b87edfe8a37cd698a4eae32f4fd1d2a7b6c115d |
|
MD5 | ee3dd80e9ca113999e10fb7ad8e1a02a |
|
BLAKE2b-256 | 6cd1be28c684d5916b7f86fff40eb4f8d02939e664dccdb1a1932db0515ab669 |
哈希值 用于 fastrlock-0.8.2-cp27-cp27m-macosx_10_15_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 94e348c72a1fd1f8191f25ea056448e4f5a87b8fbf005b39d290dcb0581a48cd |
|
MD5 | b8c7c3ce563c530a8033d26f77457769 |
|
BLAKE2b-256 | 55db393770d1ea22b2bbe12ca91a1b6c130f470ec0a002a3fa208f174de6bb50 |