Python3和 python3m 可执行文件之间的差异

/usr/bin/python3/usr/bin/python3m可执行文件之间的区别是什么?

我在 Ubuntu 13.04上观察到它们,但是 Google 建议它们也存在于其他发行版中。

这两个文件具有相同的 md5sum,但似乎不是符号链接或硬链接; 这两个文件具有不同的由 ls -li返回的 inode 编号,并且测试 find -xdev -samefile /usr/bin/python3.3不返回任何其他文件。

有人问 AskUbuntu 上类似的问题,但我想找出更多关于这两个文件之间的区别。

38016 次浏览

这要归功于 Chepner指出我已经有了解决方案的链接。

Python 实现可能在文件名中包含其他标志 例如,在 POSIX 系统上,这些标志将 也有助于文件名:

—— with-pydebug (标志: d)

—— with-pymalloc (旗号: m)

—— with-wide-unicode (标志: u)

通过 PEP 3149

具体到 m标志,Pymalloc 是这样的:

Pymalloc,由 Vladimir 编写的专用对象分配器 Marangozov 是 Python 2.1中添加的一个特性 比系统 malloc ()更快,内存开销也更少 对于 Python 程序中典型的分配模式,分配器使用 C 的 malloc ()函数来获取大量内存池,然后完成 来自这些池的较小的内存请求。

通过 Python 2.3中的新特性

最后,这两个文件在某些系统上可能是硬链接的。虽然这两个文件在我的 Ubuntu 13.04系统上有不同的 inode 编号(因此是不同的文件) ,但是 Com.lang.python 两年前的帖子显示它们曾经是硬链接的。