【发布时间】:2015-10-12 08:25:58
【问题描述】:
我想编写一个在实例化时为每个实例生成一个新 ID 的对象。但是,此 ID 必须是
- 以线程和进程安全的方式生成
- 即使跨进程也是唯一的(通过多处理产生)
一些无关紧要的事情:
- 此特定对象的创建对性能并不重要,因此由此带来的同步开销是可以接受的。
- ID 不能是串行的,尽管通常会附带一个干净的解决方案。
- 我们太无知了,根本不关心 python 2。
已经有一些解决方案只适用于one process,最优雅的是使用itertools.count() 对象。使用id() 不是选项,因为它不能保证是唯一的。理想的解决方案可能是与 itertools.count() 类似的对象,它在进程中拥有一些静态全局值。
我们项目的相关讨论:https://github.com/coala-analyzer/coala/issues/981
【问题讨论】:
-
@VPfB 这属于当前使用(哈希)的类别,几乎是独一无二的。 (感谢您提出这个建议,我实际上会更改我们的实现以使用 UUID。)我是一个非常理想主义的人,我很想采用一个保证唯一性的解决方案。
标签: python python-3.x uuid python-multiprocessing