我正在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 代码。
最佳答案
首先我们需要了解UUID是如何生成的。
UUID1根据时间+主机ID+随机分量
生成。因此,如果您同一时间在同一主机上生成UUID1,则您仅依赖于随机组件
,即14 位,这意味着 16384 次中有 1 次机会发生碰撞。不是很高,但应该考虑。
UUID4 是完全随机的(128 位),不应发生冲突,如果在您的情况下发生冲突,则可能是由于您系统上的某些内容所致,如 issue .
您能否指定您的操作系统以供进一步调查? 你安装了 os.urandom 吗?
关于python - 防止Python同一进程中uuid冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53096198/