使用Linux机器,使用python可以“mmap”多少个文件(限制是多少)? 感谢。
答案 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
处查看。