当前位置: 首页 > 面试题库 >

什么时候应该在python中使用uuid.uuid1()和uuid.uuid4()?

穆嘉
2023-03-14
问题内容

我从文档中了解了两者之间的区别。

uuid1()
从主机ID,序列号和当前时间生成UUID

uuid4()
生成一个随机UUID。

因此,uuid1使用机器/序列/时间信息来生成UUID。使用每种方法的利弊是什么?

我知道uuid1()可能会涉及隐私问题,因为它基于机器信息。我想知道在选择一个或另一个时是否还有其他细微之处。我uuid4()现在就使用,因为它是完全随机的UUID。但是我想知道我是否应该使用它uuid1来减少碰撞的风险。

基本上,我正在寻找人们使用某一种方法与另一种方法的最佳使用技巧。谢谢!


问题答案:

uuid1()确保不会产生任何碰撞(假设您不会同时创建太多碰撞)。如果uuid计算机与计算机之间没有连接很重要,那么我就不会使用它,因为mac地址已被用来使它在计算机之间具有唯一性。

您可以通过在不到100ns的时间内创建2个以上的14 uuid1来创建重复项,但这对于大多数用例而言都不是问题。

uuid4()如您所说,生成一个随机的UUID。发生碰撞的机会 确实 很小。足够小,您不必担心。问题在于,不良的随机数生成器使其更有可能发生冲突。

鲍勃·阿曼的出色回答很好地总结了这一点。(我建议阅读整个答案。)

坦白说,在没有恶意行为者的单个应用程序空间中,即使在每秒4 UUID的情况下,即使您每秒生成大量UUID,地球上所有生命的消亡也会发生在很久之前。



 类似资料:
  • 问题内容: 我已经用python编程了大约两年了。主要是数据资料(熊猫,mpl,numpy),还有自动化脚本和小型Web应用程序。我试图成为一个更好的程序员,并增加我的python知识,而困扰我的一件事是我从未使用过一个类(除了为小型Web应用程序复制随机烧瓶代码外)。我通常理解它们是什么,但是我似乎无法为为什么在一个简单的函数中需要它们的问题而wrap之以鼻。 为了使我的问题更具针对性:我编写了

  • 问题内容: 我知道他们两个都禁用了Nagle的算法。 我什么时候应该/不应该使用它们中的每一个? 问题答案: 首先,不是所有人都禁用Nagle的算法。 Nagle的算法用于减少有线中更多的小型网络数据包。该算法是:如果数据小于限制(通常是MSS),请等待直到收到先前发送的数据包的ACK,同时累积用户的数据。然后发送累积的数据。 这将对telnet等应用程序有所帮​​助。但是,在发送流数据时,等待A

  • 问题内容: 在该类中,有两个字符串,和。 有什么不同?我什么时候应该使用另一个? 问题答案: 如果你的意思是和则: 用于在文件路径列表中分隔各个文件路径。考虑在上的环境变量。您使用a分隔文件路径,因此在上将是;。 是或用于拆分到特定文件的路径。例如在上,或

  • 问题内容: 在集成我以前从未使用过的Django应用程序时,我发现了用于定义类中函数的两种不同方式。作者似乎非常有意地使用了它们。第一个是我自己经常使用的: 另一个是我不使用的,主要是因为我不知道何时使用它,以及什么用途: 在Python文档中,装饰器的解释如下: 类方法将类作为隐式第一个参数接收,就像实例方法接收实例一样。 所以我想指的是自己(而不是实例)。我不完全理解为什么会这样,因为我总是可

  • 问题内容: 什么是,什么时候应该使用它们? 我并不了解这些术语,因此当我回到家并开始使用Google Observer和Google搜索时,发现了来自不同资源的一些观点: 1)是一个类,是一个接口。 2)该类维护一个 列表。 3)当一个对象被更新时,它调用其每个的方法来通知它已被更改。 我发现这个例子: 但是我不明白为什么我们需要和?的用途和方法是什么? 问题答案: 有一个学生和一个留言板的具体示

  • 问题内容: 在工作中进行大量重构的中间,我希望引入stdClass *作为从函数返回数据的一种方式,并且我试图找到非主观论据来支持我的决定。 是否有任何情况下最好使用一种而不是另一种? 使用stdClass而不是数组有什么好处? 有人会说,函数必须尽可能少且特定,才能返回一个值。 我决定使用stdClass是暂时的,因为从长远来看,我希望为每个进程找到正确的Value Objects。 问题答案: