2

我是 python 新手。但我很好奇为什么 python 中的 mmap 被实现为共享库,而不是 .py 文件。这使得我的 IDE 无法索引 mmap 的源代码。

这是我的 python3.2 环境(ubuntu 12.04)中的输出:

markz@markz-hp6200:~$ python3.2
Python 3.2.3 (default, Oct 19 2012, 20:10:41) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mmap
>>> print(mmap.__file__)
/usr/lib/python3.2/lib-dynload/mmap.cpython-32mu.so
>>> 
4

3 回答 3

4

mmap使用特定于操作系统的工具,例如mmapLinux 上的函数(和MapViewOfFileWindows 上的函数)。这些在 Python 中不能直接使用(例如通过os模块),因此至少mmap必须用 C 编写模块的一部分才能调用这些函数。

这种特殊用途与效率无关——模块必须用 C (或 use ctypes)编写才能使用此操作系统功能。

于 2013-03-07T02:37:04.190 回答
1

用 C 编写的 Cpython 标准库中有很多东西。其他示例是( ) 的部分,itertools( )的部分......我认为主要原因之一是为了提高效率。开发人员决定,如果他们使用编译语言,他们可以让代码运行得更快。csv_csvcollections_collections

于 2013-03-07T02:35:10.510 回答
1

mmap是用 C 实现的,而不是 python。用 C 实现的扩展模块必须是共享库。

为什么?在这种情况下,可能是因为没有访问 C 就无法实现功能。在 python 中实现的模块是使用其他模块中提供的功能来实现的。但是 mmap 功能是通过调用 C 标准库函数来实现的。它不可能是一个python文件。

于 2013-03-07T02:37:19.037 回答