Python&;内存映射?

Python&;内存映射?,python,linux,ubuntu,Python,Linux,Ubuntu,使用Linux机器,一个“mmap”可以使用python生成多少个文件(限制是多少)? 谢谢。这完全取决于系统 这个限制不是python强加的,而是取决于您的操作系统设置和可用内存量。此外,您的系统可能会对每个进程施加mmap限制,您可以在/proc/sys/vm/max\u map\u count处进行检查,这完全取决于系统 这个限制不是python强加的,而是取决于您的操作系统设置和可用内存量。此外,您的系统可能会对每个进程施加mmap限制,您可以在/proc/sys/vm/max\u ma

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

这完全取决于系统


这个限制不是python强加的,而是取决于您的操作系统设置和可用内存量。此外,您的系统可能会对每个进程施加mmap限制,您可以在
/proc/sys/vm/max\u map\u count

处进行检查,这完全取决于系统


这个限制不是python强加的,而是取决于您的操作系统设置和可用内存量。此外,您的系统可能会对每个进程施加mmap限制,您可以在
/proc/sys/vm/max\u map\u count

中查看该限制。第一个是系统范围的打开文件限制,
/proc/sys/fs/nr_open
。这通常在百万范围内

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

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

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

第三个是进程可用的地址空间量(
getrlimit(2)
RLIMIT_AS
和体系结构相关(32位上的2、3或可能是4千兆字节(使用4:4地址空间补丁),或64位上的许多千兆字节).3 GB是x86上的典型配置,由于解决了空间布局问题,您可能有2.5 GB可用于
mmap


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

存在多个限制。第一个是系统范围的打开文件限制,
/proc/sys/fs/nr\u open
。这通常在百万范围内

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

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

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

第三个是进程可用的地址空间量(
getrlimit(2)
RLIMIT_AS
和体系结构相关(32位上的2、3或可能是4千兆字节(使用4:4地址空间补丁),或64位上的许多千兆字节).3 GB是x86上的典型配置,由于解决了空间布局问题,您可能有2.5 GB可用于
mmap


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

一个使用linux API的“mmap”可以有多少个文件?一个使用linux API的“mmap”可以有多少个文件?萨诺尔德,谢谢!这样一个详细的答案。您能否详细说明:“巧妙地使用
fork(2)
可以让您为每个映射文件设置一个进程,并且即使在32位处理器上也可以同时映射千兆字节到千兆字节”@user540009,它基本上是
fork()
使用一组帮助程序,每个程序都将
mmap(2)
它们自己的文件。然后您的主程序将通过
管道(2)
向助手进程发送命令,并将结果读回另一个
管道(2)
。根据所需的处理,这可能会很好地利用多核CPU,或者可能会产生大量无用的开销。:)sarnold,谢谢!这么详细的回答。你能详细说明一下吗:“巧妙地使用
fork(2)
可以让你为每个映射文件设置一个进程,并且即使在32位处理器上也可以同时映射千兆字节到千兆字节”?@user540009,基本上就是
fork()
mmap(2)mmap(2)自己的文件。然后,主程序将通过
管道(2)
向助手进程发送命令,并在另一个
管道(2)上读取结果
。根据所需的处理,这可能会很好地利用多核CPU,或者可能会产生大量无用的开销。:)