How to generate unique 64 bits integers from Python?
just mask the 128bit int
>>> import uuid>>> uuid.uuid4().int & (1<<64)-19518405196747027403L>>> uuid.uuid4().int & (1<<64)-112558137269921983654L
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>>649392468011745350111L>>> uuid.uuid1().int>>649407757923520418271L>>> uuid.uuid1().int>>649418928317413528031L
These are largely based on the clock, so much less random but the uniqueness is better
64 bits unique
What's wrong with counting? A simple counter will create unique values. This is the simplest and it's easy to be sure you won't repeat a value.
Or, if counting isn't good enough, try this.
>>> import random>>> random.getrandbits(64)5316191164430650570L
Depending on how you seed and use your random number generator, that should be unique.
You can -- of course -- do this incorrectly and get a repeating sequence of random numbers. Great care must be taken with how you handle seeds for a program that starts and stops.
A 64-bit random number from the OS's random number generator rather than a PRNG:
>>> from struct import unpack; from os import urandom>>> unpack("!Q", urandom(8))[0]12494068718269657783L