Python bindings to Rust's UUID library.
Project description
FastUUID is a library which provides CPython bindings to Rust’s UUID library.
The provided API is exactly as Python’s builtin UUID class.
It is supported on Python 3.7, 3.8, 3.9 & 3.10.
Why?
It is much faster than Python’s pure-python implementation and it is stricter when parsing hexadecimal representation of UUIDs.
If you need to generate a lot of random UUIDs we also provide the uuid4_bulk() function which releases the GIL for the entire duration of the generation. This allows other threads to run while the library generates UUIDs.
Benchmarks
processor |
machine |
python compiler |
python implementation |
python implementation version |
python version |
python build |
release |
system |
cpu |
---|---|---|---|---|---|---|---|---|---|
x86_64 |
x86_64 |
GCC 5.5.0 |
CPython |
3.7.2 |
3.7.2 |
default |
4.15.0-50-generic |
Linux |
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz |
name |
min |
max |
mean |
stddev |
median |
iqr |
outliers |
ops |
rounds |
iterations |
---|---|---|---|---|---|---|---|---|---|---|
tests/test_benchmarks.py::test_parse_bytes_fastuuid |
8.770148269832134e-07 |
3.0054012313485146e-05 |
9.848993185755912e-07 |
6.654121944953314e-07 |
9.530049283057451e-07 |
2.6979250833392143e-08 |
515;8080 |
1015332.2082162144 |
149366 |
1 |
tests/test_benchmarks.py::test_parse_bytes_uuid |
9.00006853044033e-07 |
2.4181994376704097e-05 |
1.0102117337399724e-06 |
6.361040394445994e-07 |
9.739887900650501e-07 |
3.899913281202316e-08 |
1130;10702 |
989891.4916557473 |
198020 |
1 |
tests/test_benchmarks.py::test_parse_bytes_le_fastuuid |
9.00996383279562e-07 |
2.4662993382662535e-05 |
1.0116569599011118e-06 |
5.687526428398989e-07 |
9.840005077421665e-07 |
2.200249582529068e-08 |
703;9368 |
988477.3590622543 |
163052 |
1 |
tests/test_benchmarks.py::test_parse_bytes_le_uuid |
1.348991645500064e-06 |
3.5200006095692515e-05 |
1.5184524591452776e-06 |
9.295692916442362e-07 |
1.448992406949401e-06 |
3.897002898156643e-08 |
1620;12511 |
658565.2346092485 |
170271 |
1 |
tests/test_benchmarks.py::test_parse_fields_fastuuid |
9.819923434406519e-07 |
3.2625976018607616e-05 |
1.217285795660234e-06 |
1.0234898538816672e-06 |
1.087988493964076e-06 |
6.702612154185772e-08 |
3199;12487 |
821499.7690477591 |
143844 |
1 |
tests/test_benchmarks.py::test_parse_fields_uuid |
1.1137977708131076e-06 |
0.000147809402551502 |
1.2054474234359692e-06 |
5.093104655522965e-07 |
1.144595444202423e-06 |
6.060581654310231e-08 |
2304;5896 |
829567.4954861335 |
167983 |
5 |
tests/test_benchmarks.py::test_parse_hex_fastuuid |
9.870273061096668e-07 |
2.906599547713995e-05 |
1.11212962918218e-06 |
6.906885628642859e-07 |
1.0759977158159018e-06 |
3.0995579436421394e-08 |
577;8272 |
899175.7559191765 |
143288 |
1 |
tests/test_benchmarks.py::test_parse_hex_uuid |
1.3360113371163607e-06 |
2.6262016035616398e-05 |
1.4448148991822913e-06 |
7.064083638385458e-07 |
1.3989920262247324e-06 |
2.9016518965363503e-08 |
679;4802 |
692130.1826039868 |
82156 |
1 |
tests/test_benchmarks.py::test_parse_int_uuid |
5.448004230856896e-07 |
4.164349229540676e-06 |
6.099919819231937e-07 |
2.0401652680352933e-07 |
5.548994522541762e-07 |
4.430039552971725e-08 |
3607;3925 |
1639365.8107557097 |
87951 |
20 |
tests/test_benchmarks.py::test_parse_int_fastuuid |
8.950009942054749e-07 |
4.946498665958643e-05 |
1.0105578493921953e-06 |
6.873330198387691e-07 |
9.739887900650501e-07 |
2.1012965589761734e-08 |
529;12534 |
989552.4542226401 |
176088 |
1 |
tests/test_benchmarks.py::test_fast_uuidv3 |
5.410998710431158e-07 |
3.5570512409321965e-06 |
5.971385425220447e-07 |
1.672736409563351e-07 |
5.526497261598707e-07 |
2.949964255094524e-08 |
4865;6332 |
1674653.248434526 |
83508 |
20 |
tests/test_benchmarks.py::test_uuidv3 |
3.6269775591790676e-06 |
4.193797940388322e-05 |
3.933511159797234e-06 |
1.4521217506191846e-06 |
3.782013664022088e-06 |
6.00120984017849e-08 |
548;4193 |
254225.79455743768 |
53582 |
1 |
tests/test_benchmarks.py::test_fast_uuidv4 |
1.47343598655425e-07 |
2.069187758024782e-06 |
1.6777362874701377e-07 |
7.169360028617447e-08 |
1.5453133528353646e-07 |
8.188180800061673e-09 |
6101;11550 |
5960412.297619802 |
198413 |
32 |
tests/test_benchmarks.py::test_uuidv4 |
2.275977749377489e-06 |
5.939402035437524e-05 |
2.5699563458422217e-06 |
1.316784132061215e-06 |
2.38200300373137e-06 |
1.309963408857584e-07 |
2068;5815 |
389111.667837409 |
85610 |
1 |
tests/test_benchmarks.py::test_fast_uuidv4_bulk_threads |
0.0009843519947025925 |
0.007268004992511123 |
0.0014418828965801719 |
0.0007545185495019851 |
0.0012059269938617945 |
0.0003288870066171512 |
42;54 |
693.5375975204223 |
549 |
1 |
tests/test_benchmarks.py::test_fast_uuidv4_threads |
0.0030693279986735433 |
0.008087011985480785 |
0.004009611603774935 |
0.000715605913448762 |
0.0038650799833703786 |
0.0006588477554032579 |
53;19 |
249.40071478707026 |
273 |
1 |
tests/test_benchmarks.py::test_uuidv4_threads |
0.030999513022834435 |
0.06895541000994854 |
0.040025271589084616 |
0.009975862168373506 |
0.036475206492468715 |
0.008713199000339955 |
3;2 |
24.98421522947798 |
22 |
1 |
tests/test_benchmarks.py::test_fast_uuidv5 |
5.316498572938144e-07 |
4.090600123163313e-06 |
5.890041556925782e-07 |
1.8620985914996815e-07 |
5.419497028924525e-07 |
2.9799412004649576e-08 |
3998;6415 |
1697780.8905680121 |
88921 |
20 |
tests/test_benchmarks.py::test_uuidv5 |
3.7190038710832596e-06 |
5.8079982409253716e-05 |
4.403547300216035e-06 |
2.439066121654033e-06 |
3.910012310370803e-06 |
2.169981598854065e-07 |
2283;4139 |
227089.64655629804 |
57383 |
1 |
Run them yourself to verify.
What’s Missing?
UUIDv1 generation
Pickle support
PRs are welcome.
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 fastuuid-0.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29d0e64f240cf94715a414f8838493a30a2034fbb0fa1b386a627d534f59879c |
|
MD5 | 4e020c134d510a11fabcbd8d55e17e00 |
|
BLAKE2b-256 | 1f43d652a5a256f4ae9f5adf7ac64fee6ddb9a2e12a16527e97f041c0ed2a624 |
Hashes for fastuuid-0.8.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ada56e08c7cdf6e61d9a8fe509c0cc5fc1097df06ed9d8d3a3407d601554d0a |
|
MD5 | 8d65f19f925a071c946407db03d6e747 |
|
BLAKE2b-256 | 3839f1282d099331c4c6d1735209ade18f5f663ac726edd00c30976d2b9d36b7 |
Hashes for fastuuid-0.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f50eab0dcfaa493b07162aa2278412810c2f1a0dcdb67f68e76506fb5d0f725 |
|
MD5 | 1f9d12a95f37ce9855e6cdb15dd5839f |
|
BLAKE2b-256 | 66522b3f3c7361d293230f60fd9a365599c18e2668fc62bdd4b0322a27e33f67 |
Hashes for fastuuid-0.8.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a2a31afc64768de3840bab044e2e6fe66c7f969d5eaf524a65fb6312b3fe0a2 |
|
MD5 | 0941fbd678c78162855a588feb111b13 |
|
BLAKE2b-256 | 19a2550f6d83a1a63c6e4c33e9bb590ea5462e3ad06a5de3bfe7a9562f608894 |
Hashes for fastuuid-0.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dc280089205f98764999ed013b93d325ad74db1d591bc7f15dbe6d8f7274d0a |
|
MD5 | 3a43083f7712b26278a5a8c0eddbfc56 |
|
BLAKE2b-256 | 13929d5924b062cd7a1e9257045982e0946b78df055a4bdcda8c86b9c2911ddd |
Hashes for fastuuid-0.8.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d66cdd9a2222935960f4c50281bace32081b533abdb5dcb58b85280b5b953945 |
|
MD5 | e9a8683b33e82c3b69c04cfc16c771fa |
|
BLAKE2b-256 | 900ffc17d62afa06ea585d2abfc3bd6002719a57a710a2f49538d155227ea8bb |
Hashes for fastuuid-0.8.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1deae4c865ec69ec3027c400e9ce171fcfb3dc1dd0931e06d80d87111a320b8f |
|
MD5 | 9f4ebb90982456ed775bd312eb3beaf2 |
|
BLAKE2b-256 | bad7c1b24516ce2ab9158332505eeafcf3852c85191ef11af0ca35b93509b923 |
Hashes for fastuuid-0.8.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b46f6e10684aaae13e2576b84f031b50f0d3741be51d113e6a918fc31251b165 |
|
MD5 | 165948aeaeb486d3e6fa40aeaeb54828 |
|
BLAKE2b-256 | c8a7b08037aa6045a099079407f63ea1d4b3f4ec954293037f7e2a5ea3a32afd |