Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自同一台计算机上多个进程的唯一UUID_Python_Uuid - Fatal编程技术网

Python 来自同一台计算机上多个进程的唯一UUID

Python 来自同一台计算机上多个进程的唯一UUID,python,uuid,Python,Uuid,为了标记我们创建的数据,我正在考虑使用UUID。安全性不是问题,所以我打算使用版本1(基于日期和mac地址)。唯一值得关注的是,每个用户可能一次从具有多个线程的不同进程创建多个数据文件。假设Python的uuid库是线程安全的(尽管看起来不安全),那么仍然存在多进程问题。我正在考虑用破折号和进程号作为uuid的后缀 由于我们小组在UUID方面的经验很少,我需要记住哪些问题?通常如何处理多进程问题?仅用于完全随机的UUID。没有必要担心碰撞 根据评论编辑:根据我的经验,冗余数据迟早会导致不一致。避

为了标记我们创建的数据,我正在考虑使用UUID。安全性不是问题,所以我打算使用版本1(基于日期和mac地址)。唯一值得关注的是,每个用户可能一次从具有多个线程的不同进程创建多个数据文件。假设Python的uuid库是线程安全的(尽管看起来不安全),那么仍然存在多进程问题。我正在考虑用破折号和进程号作为uuid的后缀

由于我们小组在UUID方面的经验很少,我需要记住哪些问题?通常如何处理多进程问题?

仅用于完全随机的UUID。没有必要担心碰撞

根据评论编辑:根据我的经验,冗余数据迟早会导致不一致。避免冗余是关系数据库设计的信条,这是有原因的


因此,不要将UUID用作实际“原始计算机”和“时间戳”数据的“冗余备份”。要么将其用作不携带任何其他信息的纯唯一ID,要么根本不使用它。

Python 2.5的
uuid.uuid1()
的线程不安全部分是当它将当前时间戳与以前的时间戳进行比较时。如果没有锁,两个进程最终可能会与同一个全局保存的时间戳进行比较。(在我未经训练的眼睛看来,这就是它的样子。)我希望得到一个答案,即设计uuid时所描述的更多约定。我特别担心有一个很好的理由不使用直接进程id。但是,如果没有这个理由,我将接受wcoenen的回答。他有一个很好的观点,但我认为这与我的特殊情况无关。我更喜欢uuid1的(弱)可追溯性。元数据(创建时间、计算机)应该写入文件本身,但像大多数编码标准一样,这是无法保证的。相信我,我们现在有很多不一致的地方,而且我们写的还远远不够。我宁愿把它作为备份,永远不要使用它,也不要依赖我们所有的程序去做正确的事情。后者是不可能的。这至少给了我一个小机会,当有人把数据搞砸了。(我并不想以编程的方式使用它,只是偶尔当我们需要跟踪错误时)如果我要经常使用它,我会使用比uuid更容易阅读的东西。