为什么在分配可变内存时,运行在不同控制台上的python脚本会相互影响?

2024-09-27 04:20:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用两个控制台来运行python脚本。一个是cmd控制台,另一个是pycharm控制台。令我惊讶的是,结果似乎两个不同的控制台共享相同的内存空间。具体如下图所示。我对四种现象感到困惑

现象1:在同一地址分配的不同控制台中的变量

在cmd控制台中,我创建了三个变量,“a”(地址为0x7ffaf8346290)、“b”(地址为0x7ffaf83462b0)和“c”(地址为0x7ffaf83462d0

在pycharm控制台中,我创建了两个变量“a”(地址为0x7ffaf8346290)和“b”(地址为0x7ffaf83462b0

现象2:同一地址中的变量不能被两个控制台访问

“c”指向cmd控制台中的地址0x7ffaf83462d0。在pycharm控制台中,3的地址为0x7ffaf83462d0,但无法访问“c”

现象3:一个控制台创建的变量受另一个控制台分配内存的影响

在pycharm控制台中,我创建了另外两个变量c=5(地址为0x7ffaf83462f0)和d=6(地址为0x7ffaf8346310

有趣的是,在cmd控制台中,5的地址是0x7ffaf8346310,与pycharm控制台中的地址相同。并且6的地址是0x7ffaf8346330,具有顺序增长

现象4:列表对象似乎没有受到影响

我分别在两个控制台中创建了两个列表[1,2,3,4],两个的地址似乎彼此独立

cmd consolepycharm console


Tags: 对象脚本cmd列表顺序地址pycharm指向
2条回答

您的两个Python会话根本不会相互影响。它们不以任何方式共享内存。现代操作系统使用虚拟内存,其中每个进程都有自己的虚拟内存地址到物理RAM的映射(或可以映射到内存的文件或其他奇怪的东西)。这意味着两个进程可以同时为不同的事物使用相同的虚拟内存地址,而不会相互影响

ID值仅保证在同一进程中不同对象的ID值是不同的,且生命周期重叠

很可能,您的两个控制台使用一个Python引擎。Python引擎运行一个负责内存分配和操作的虚拟机。你可以在别处阅读Python的基础知识,试试谷歌Python虚拟机(PVM)

相关问题 更多 >

    热门问题