我使用两个控制台来运行python脚本。一个是cmd控制台,另一个是pycharm控制台。令我惊讶的是,结果似乎两个不同的控制台共享相同的内存空间。具体如下图所示。我对四种现象感到困惑
在cmd控制台中,我创建了三个变量,“a”(地址为0x7ffaf8346290
)、“b”(地址为0x7ffaf83462b0
)和“c”(地址为0x7ffaf83462d0
)
在pycharm控制台中,我创建了两个变量“a”(地址为0x7ffaf8346290
)和“b”(地址为0x7ffaf83462b0
)
“c”指向cmd控制台中的地址0x7ffaf83462d0
。在pycharm控制台中,3
的地址为0x7ffaf83462d0
,但无法访问“c”
在pycharm控制台中,我创建了另外两个变量c=5
(地址为0x7ffaf83462f0
)和d=6
(地址为0x7ffaf8346310
)
有趣的是,在cmd控制台中,5
的地址是0x7ffaf8346310
,与pycharm控制台中的地址相同。并且6
的地址是0x7ffaf8346330
,具有顺序增长
我分别在两个控制台中创建了两个列表[1,2,3,4]
,两个的地址似乎彼此独立
您的两个Python会话根本不会相互影响。它们不以任何方式共享内存。现代操作系统使用虚拟内存,其中每个进程都有自己的虚拟内存地址到物理RAM的映射(或可以映射到内存的文件或其他奇怪的东西)。这意味着两个进程可以同时为不同的事物使用相同的虚拟内存地址,而不会相互影响
ID值仅保证在同一进程中不同对象的ID值是不同的,且生命周期重叠
很可能,您的两个控制台使用一个Python引擎。Python引擎运行一个负责内存分配和操作的虚拟机。你可以在别处阅读Python的基础知识,试试谷歌Python虚拟机(PVM)
相关问题 更多 >
编程相关推荐