为什么多处理中的新对象具有相同的ID?

为什么多处理中的新对象具有相同的ID?,第1张

为什么多处理中的新对象具有相同的ID?

CPython中的id返回给定对象的指针。由于线程具有共享的地址空间,因此将在两个不同的位置分配对象的两个不同实例,并返回两个不同的ID(又称为虚拟地址指针)。

拥有自己的地址空间的单独进程不是这种情况。偶然地,它们碰巧获得了相同的地址指针。

请记住,地址指针是虚拟的,因此它们表示进程地址空间本身内的偏移量。这就是为什么它们相同的原因。

通常最好不要依靠id()来区分对象,因为新对象可能会获得旧对象的ID,从而随着时间的推移很难跟踪它们。通常会导致棘手的错误。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5645515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存