Python3 uuid
import uuid
# uuid1()
>>> print(uuid.uuid1())
2cf0fa7e-48d9-11e6-93fb-c03fd53413ef
# uuid3()
>>> print(uuid.uuid3(uuid.NAMESPACE_DNS, 'test'))
45a113ac-c7f2-30b0-90a5-a399ab912716
# uuid4()
>>> print(uuid.uuid4())
08bffbb6-05e1-41c1-8989-6aa07a4a5e5d
# uuid5()
>>> print(uuid.uuid5(uuid.NAMESPACE_DNS, 'test'))
4be0643f-1d98-573b-97cd-ca98a65347dd
使用经验
Python中没有基于DCE的,uuid2可以忽略
uuid4基于随机数存在概率性重复,不推荐使用
对时间精确,并且是分布式计算可用uuid1
若有名字的唯一性要求,最好使用uuid3或uuid5
命名空间(不同的值)
NAMESPACE_DNS
NAMESPACE_URL
NAMESPACE_OID
NAMESPACE_X500
介绍
uuid1()---基于时间戳和主机id
基于分布式计算环境DCE(python中没有这个函数)
uuid3()---基于名字和MD5散列值
uuid4()---基于随机数
uuid5()---基于名字的SHA-1散列值
总结
- 如果实在要求唯一,可以经过时间戳uuid1得到一个uuid,之后再拼接上当前时间戳进行一次基于uuid3的计算,这样的值就近乎于唯一了