首先,32位平台理论上最多可以支持2**32,或4GB。但操作系统自己保留了其中的一大部分。在Windows上,默认情况下,这个数据块是整个2GB的(您可以将其配置为更低,但有些软件可能会崩溃,因为它假定使用“签名指针”是安全的),而在其他平台上,它通常更像512MB。

类似地,64位平台理论上最多可以支持2**64,或16EB。在这里,无论操作系统的存储容量是512MB还是2GB,都不会产生显著的影响。

但是,您的硬件可能会限制在44到56位之间(大多数当前系统是48位),而44位只有256TB。

你的操作系统可能会把事情限制得更远。IIRC,最早的64位linux内核只使用40位(因为当时没有硬件可以使用更多),只有1TB。

最后,在Windows上,如果你使用的是“basic”或“starter”版本,那么对于windows8homebasic版本,它可能会限制到8GB。这是唯一一个可能影响你的文件。

但是,与后来32位的情况不同,2018年几乎没有人拥有比他们的操作系统一次分页更多的物理RAM。很多人在内存超过4GB的机器上运行32位Windows(或者64位Windows上运行32位Python),但是要在一个64位系统中加载一个40位有限操作系统的RAM超过1TB几乎是不可能的。

因此,无论您有多少RAM,您都应该能够将其大部分用于mmap。

有时,您希望mmap一个实际上无法放入RAM的文件。然后,您将依赖于操作系统的页面交换,这当然比窗口化更小的文件映射效率要低,但可能足够高效,而且可能要简单得多。

在这种情况下,它可能会在你的系统上工作,但是如果你不知道比你告诉我们的更多的信息,那就没有办法确定了。最简单的答案(和Python一样)是EAFP:尝试它,并准备处理它失败的异常(无论是通过编程方式,还是通过读取堆栈跟踪并搜索StackOverflow来寻找解决方案)。