我正在用Python生成uuid,我注意到有冲突。如果使用uuid.uuid1()
或uuid.uuid4()
,则会发生冲突。
我在网上阅读了许多文章,但详细阐述了“理论” ,如果正确生成UUID冲突是不可能的。
但是我还没有找到可以解释如何确保正确完成 UUID生成的内容。
如何在Python 3.7
之前执行此操作?
我看到了Python 3.7 has a notion of UUID safety,但是在3.7之外有办法吗?
详细信息:
在Ubuntu 18.04上运行,在Jupyter Lab中运行Python代码。
答案 0 :(得分:1)
首先,我们需要了解如何生成 UUID 。
UUID1 是根据time + Host ID + random component
生成的。因此,如果您同时在同一主机上生成 UUID1 ,则您仅依靠random component
这是14位,这意味着在16384中有1次机会发生碰撞。不太高,但应该考虑。
UUID4 是完全随机的(128位),并且不应发生冲突,如果在您的情况下发生冲突,可能是由于系统上的某些问题issue造成的。
能否请您指定操作系统以进行进一步调查? 您安装了os.urandom吗?