Search code examples
pythonguidrandomuniqueidentifieruuid

How to generate unique 64 bits integers from Python?


I need to generate unique 64 bits integers from Python. I've checked out the UUID module. But the UUID it generates are 128 bits integers. So that wouldn't work.

Do you know of any way to generate 64 bits unique integers within Python? Thanks.


Solution

  • just mask the 128bit int

    >>> import uuid
    >>> uuid.uuid4().int & (1<<64)-1
    9518405196747027403L
    >>> uuid.uuid4().int & (1<<64)-1
    12558137269921983654L
    

    These are more or less random, so you have a tiny chance of a collision

    Perhaps the first 64 bits of uuid1 is safer to use

    >>> uuid.uuid1().int>>64
    9392468011745350111L
    >>> uuid.uuid1().int>>64
    9407757923520418271L
    >>> uuid.uuid1().int>>64
    9418928317413528031L
    

    These are largely based on the clock, so much less random but the uniqueness is better