在Python中,我创建了3个对象,每个对象都有一个唯一的标识符。在
在所有这些对象中生成唯一标识符的方法如下:
class Foo(object):
def __init__(self):
unique_id = hashlib.sha1(str(time.time())).hexdigest()
我像这样一个接一个地创建这些对象:
^{pr2}$所有这些实例最终都具有相同的unique_id
,因为它们的创建之间没有足够的时间间隔。在
我在对象创建之间使用了一个sleep(0.1)
,但我相信有更优雅的方法来解决这个问题。在
建议?在
Python对象已经有一个唯一的标识符,即它们的
id
。但是,只要对象仍然存在,这是唯一的;对象被删除后,id
可以被重用。在您还可以使用标准库中的^{} 模块,或者只在类中保留一个计数器:
至少有两种方法可以创建唯一标识符:
增量标识符
第一个选择是显而易见的:无论是在数据库层还是在应用程序层,都需要存储最后生成的标识符的信息,这样就可以通过递增标识符来生成另一个标识符。在
示例解决方案如下:
尽管看看其他人的建议-他们的建议可能更适合于增量ID。在
通用唯一标识符
第二种选择是使用适当的工具来完成适当的任务:UUID是专门为您提供唯一标识符而设计的。在
有一个名为UUID的模块与标准Python安装捆绑在一起,您可以使用它来执行以下操作:
^{pr2}$将它们转换成散列
如果需要,可以将这两个值转换为SHA-1哈希值:
第一个和第二个加起来怎么样?在
我对python的了解还不足以修复它,但我的想法是编写
让全班同学计算
^{pr2}$相关问题 更多 >
编程相关推荐