Python&记忆映射?

时间:2011-03-04 00:42:23

标签: python linux ubuntu

使用Linux机器,使用python可以“mmap”多少个文件(限制是多少)? 感谢。

2 个答案:

答案 0 :(得分:4)

游戏中有多个限制。第一个是系统范围的打开文件限制/proc/sys/fs/nr_open。这通常在百万范围内。

此限制可能会继续计入打开文件,设置映射,然后再次关闭文件的进程。

第二个是每进程getrlimit(2) RLIMIT_NOFILE个进程数的打开文件。此限制通常在1024范围内。

此限制似乎位于将分配给进程的最高文件描述符上,因此可能继续计入打开文件的进程,设置映射,然后再次关闭文件。

第三个是流程可用的地址空间量(getrlimit(2) RLIMIT_AS 架构相关(2,3或4 GB)(4个) :32位上的4个地址空间补丁,或者64位上的许多千兆字节).x86上典型的是3 GB,由于地址空间布局问题,mmap可能有2.5个演出

巧妙地使用fork(2)可以让您为每个映射文件设置一个进程,并且即使在32位处理器上也可以同时映射千兆字节,但getrlimit(2) RLIMIT_NPROC个每个用户限制的进程可能会限制您打开进程的最大数量,从而限制文件。

答案 1 :(得分:1)

这完全取决于系统。

此限制不会由python强加,而是取决于您的操作系统设置和可用内存量。此外,您的系统可能会施加每个进程的mmap限制​​,您可以在/proc/sys/vm/max_map_count处查看。