Python可以使用多少RAM?

4

如果我在一台拥有64GB内存的机器上使用Python(32位版本),它能够使用这64GB内存吗?还是这取决于操作系统?


1
我们假设使用的是64位操作系统吗? - Foon
是的,64位操作系统已经存在。 - Olivier_s_j
5
尝试一下:gigabyte = ' ' * (1 << 30),然后使用 chunk = gigabyte * 10 来分配 10GB 的内存。 - Alfe
1
冒昧代表Ojtwist说,在我记忆中,一些第三方库只适用于32位的Python。 - Foon
1
@Alfe 那不会分配11GiB吗? - wizzwizz4
显示剩余2条评论
2个回答

8

Python本身并不使用任何机制来扩展操作系统的每个进程用户空间内存限制。然而,有一些模块和方法可以实现扩展。因此,答案是“取决于你愿意做多少工作”。


我的猜测是,无论使用什么工具和扩展,Python 32位版本只能寻址高达4GB的内存空间。我没有确凿的证据来证明这一点,但这是有道理的。 - Michael Aquilina
1
@MichaelAquilina 你可能还没有听说过覆盖技术,而且很可能会感到庆幸。 - msw

2
Python可以使用分配给它的所有内存。操作系统分配内存,通常每个进程都有限制,但是有命令可以控制这些限制(例如在Unix上使用'ulimit')。但是大多数操作系统使用虚拟内存,因此操作系统及其进程可以使用比可用物理内存更多的虚拟内存。因此,Python程序可能使用超过物理内存的内存。但是,操作系统虚拟内存系统控制哪些页面在物理内存中,哪些页面被交换到磁盘。因此,您可能正在“使用”64 GB的内存,但是最近使用的页面的只有一小部分实际上在任何时间都在物理内存中。某些物理内存还将保存频繁运行的操作系统部分,例如那些虚拟内存分配函数。此外:分配给进程的内存以不同方式分配和分配(例如堆空间与栈空间)。因此,一个可能会用完内存,而另一个仍有大量未使用的内存。因此,这取决于您对“使用”的定义以及(正如其他人所说)“您愿意做多少工作”。您可能会分配64GB,但是除非您在作为操作系统的一部分运行的嵌入式系统上运行,否则您不太可能“使用”所有物理内存。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接