Разница между исполняемыми файлами python3 и python3m

116

В чем разница между /usr/bin/python3и /usr/bin/python3mисполняемыми?

Я наблюдаю за ними в Ubuntu 13.04, но Google предполагает, что они существуют и в других дистрибутивах.

Два файла имеют одинаковую сумму md5sum, но не кажутся символическими или жесткими ссылками; два файла имеют разные номера inode, возвращаемые, ls -liи тестирование find -xdev -samefile /usr/bin/python3.3не возвращает никаких других файлов.

Кто-то задал аналогичный вопрос на AskUbuntu , но я хотел узнать больше о разнице между двумя файлами.

Джеймс Мишра
источник
11
Это описано в PEP, упомянутом в ответе на связанный вопрос.
chepner
Ах, спасибо! Перед тем, как написать этот вопрос, я прочитал первые несколько строк PEP, но мне было лень читать все ...
Джеймс Мишра

Ответы:

117

Благодарим за это Чепнера, указавшего , что у меня уже есть ссылка на решение.

Реализации Python МОГУТ включать дополнительные флаги в тег имени файла, если это необходимо. Например, в системах POSIX эти флаги также будут влиять на имя файла:

--with-pydebug (флаг: d)

--with-pymalloc (флаг: m)

--with-wide-unicode (флаг: u)

через PEP 3149 .

Что касается mконкретно флага, это то, что такое Pymalloc:

Pymalloc, специализированный распределитель объектов, написанный Владимиром Марангозовым, был функцией, добавленной в Python 2.1. Pymalloc призван быть быстрее, чем системная malloc (), и иметь меньше накладных расходов памяти для шаблонов распределения, типичных для программ Python. Распределитель использует функцию malloc () языка C для получения больших пулов памяти, а затем выполняет меньшие запросы памяти из этих пулов.

через Что нового в Python 2.3

Наконец, в некоторых системах эти два файла могут быть жестко связаны. Хотя два файла имеют разные номера inode в моей системе Ubuntu 13.04 (следовательно, это разные файлы), сообщение comp.lang.python от двухлетней давности показывает, что когда-то они были жестко связаны.

Джеймс Мишра
источник