我通过并发运行了一个分散在核心上的进程。每个进程都有一个最终调用的功能os.getpid()。os.getpid()尽管ID位于不同的并发分支中,但ID是否可能会重合?
os.getpid()
我不知道by返回的值的含义os.getpid()是否明确定义。我非常确定你不能依赖于两个运行的进程具有相同的ID,但是很有可能在某些进程终止后,该ID最终会被重用。
这就是大多数操作系统中发生的情况,并且实现os.getpid()很可能只是调用操作系统并返回相同的值。
因此,如果我理解正确,那么时间和pid的串联应该给出一个唯一的标识符。
@ guyguyguy12345-这取决于此标识符的唯一性。如果您在一个计时器滴答声中执行两次此操作,则它在单台计算机上将失败。您可以添加一个全局计数器来修复它。如果您在大型计算机集群上执行此操作,则两个计算机之间可能会在同一位置生成相同的数字。如果那小小的风险是一个问题,那么
secrets.token_bytes()
可能会更好。实现
os.getpid
使用C的getpid函数。请参阅posix系统的源代码。无法在Windows上找到它