栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

64位Windows上的Python 32位内存限制

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

64位Windows上的Python 32位内存限制

我不知道您为什么认为您的进程应该能够访问4GB。根据MSDN上Windows发行版的内存限制,在64位Windows 7上,默认的32位进程获得2GB。*这正是它耗尽的地方。

那么,有办法解决吗?

好吧,您可以使用该

IMAGE_FILE_LARGE_ADDRESS_AWARE
标志进行自定义的32位Python构建,然后重新构建
numpy
以及所有其他扩展模块。我不能保证所有相关的代码都可以通过大地址感知标志真正安全地运行。这是一个好机会,但是除非有人已经做过并对其进行了测试,否则“好机会”是任何人都可能知道的最好的机会。

或者,更明显的是,仅使用64位Python。


物理RAM的数量是完全无关的。您似乎认为您拥有8GB RAM的“ 8GB限制”,但这不是它的工作原理。您的系统将占用所有RAM 以及所需的任何交换空间
,并将其分配给应用程序;一个应用程序即使在8GB的计算机上也可能能够获得20GB的虚拟内存而不会出现内存错误。同时,一个32位应用程序无法访问超过4GB的空间,并且该操作系统将占用部分地址空间(默认情况下为Windows的一半),因此即使在8GB的计算机上,您也只能获得2GB的空间。那没什么其他的。(并不是说在现代操作系统上可能永远“不运行其他任何东西”,但是您知道我的意思。)


那么,为什么这在您的Linux机器上有效呢?

因为您的Linux机器被配置为可以为32位进程提供3.5GB的虚拟地址空间,或3.99GB或………好吧,我无法告诉您确切的数字,但是多年来我见过的每个发行版都已配置至少需要3.25GB。


*还请注意,您甚至没有真正获得全部2GB的数据;您的程序。操作系统及其驱动程序可让您的代码访问的大多数内容都位于另一半,而您加载的每个DLL,所需的任何空间以及各种其他内容则位于另一半。总计不算太多,但不为零。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号