防止 Python 同一进程中的 uuid 冲突

Prevent uuid collision in Python same process

我在 Python 中生成 uuid,我注意到存在冲突。如果我使用 uuid.uuid1()uuid.uuid4(),我会发生冲突。

我在网上看了很多文章,但他们详细阐述了 "theory" 如果正确生成 UUID 冲突是不可能的。

但我还没有找到解释如何确保 UUID 生成正确完成的方法

我怎样才能在 Python 3.7 之前执行此操作?
我看到了 Python 3.7 has a notion of UUID safety 但有没有办法在 3.7 之外做到这一点?

详情:
运行 Ubuntu 18.04,Jupyter Lab 中的 运行 Python 代码。

首先我们需要了解UUID是如何生成的。

UUID1是根据time + Host ID + random component生成的。因此,如果您在同一时间同一host上生成UUID1,您仅依赖 14 位的 random component,这意味着您有 16384 次碰撞的机会。不是很高,但应该考虑。

UUID4 是完全随机的(128 位)并且不应发生冲突,如果它在您的情况下发生冲突,则可能是由于您系统上的某些问题,例如 issue

您能否指定您的 os 以供进一步调查? 你有安装 os.urandom 吗?