Mailing List Archive

[issue12986] Using getrandbits() in uuid.uuid4() is faster and more readable
Serhiy Storchaka <storchaka@gmail.com> added the comment:

> uuids = set()
> for u in [uuid.uuid4() for i in range(1000)]:
> uuids.add(u)

uuids = {uuid.uuid4() for i in range(1000)}

However, I'm not sure of the legitimacy of replacement suitable for cryptographic use `os.urandom` on fast pseudo-random `random.getrandbits`. Especially for applications that need to generate a lot of uuids.

----------
nosy: +storchaka

_______________________________________
Python tracker <report@bugs.python.org>
<http://bugs.python.org/issue12986>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com
[issue12986] Using getrandbits() in uuid.uuid4() is faster and more readable [ In reply to ]
Antoine Pitrou <pitrou@free.fr> added the comment:

> However, I'm not sure of the legitimacy of replacement suitable for
> cryptographic use `os.urandom` on fast pseudo-random
> `random.getrandbits`. Especially for applications that need to generate
> a lot of uuids.

Agreed. urandom() is supposed to incorporate "real" random, while getrandbits() uses a PRNG.
Also, as the OP shows, it's easy to inject your own random source:

>>> grb = "uuid.UUID(int=random.getrandbits(128), version=4)"

if you really need the speed.

----------
nosy: +pitrou
stage: -> patch review
versions: +Python 3.3 -Python 3.2

_______________________________________
Python tracker <report@bugs.python.org>
<http://bugs.python.org/issue12986>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/list-python-bugs%40lists.gossamer-threads.com