Różnica między plikami wykonywalnymi python3 i python3m

116

Jaka jest różnica między plikami /usr/bin/python3i /usr/bin/python3mplikami wykonywalnymi?

Obserwuję je na Ubuntu 13.04, ale Google sugeruje, że istnieją również w innych dystrybucjach.

Te dwa pliki mają tę samą sumę md5, ale nie wydają się być dowiązaniami symbolicznymi ani twardymi; oba pliki mają różne numery ls -lii- węzłów zwrócone przez, a testowanie find -xdev -samefile /usr/bin/python3.3nie zwraca żadnych innych plików.

Ktoś zadał podobne pytanie na AskUbuntu , ale chciałem dowiedzieć się więcej o różnicy między tymi dwoma plikami.

James Mishra
źródło
11
Jest to uwzględnione w PEP wspomnianym w odpowiedzi na powiązane pytanie.
chepner
Ah dziękuję! Przed napisaniem tego pytania przeczytałem kilka pierwszych linijek PEP, ale byłem zbyt leniwy, aby przeczytać całą sprawę ...
James Mishra

Odpowiedzi:

117

To zasługa Chepnera , który wskazał, że mam już link do rozwiązania.

Implementacje Pythona MOGĄ zawierać dodatkowe flagi w znaczniku nazwy pliku, jeśli to konieczne. Na przykład w systemach POSIX te flagi będą również wpływać na nazwę pliku:

--with-pydebug (flaga: d)

--with-pymalloc (flaga: m)

--with-wide-unicode (flaga: u)

przez PEP 3149 .

Odnosząc się mkonkretnie do flagi, oto czym jest Pymalloc:

Pymalloc, wyspecjalizowany alokator obiektów napisany przez Vladimira Marangozova, był funkcją dodaną do Pythona 2.1. Pymalloc ma być szybszy niż system malloc () i mieć mniejsze obciążenie pamięci dla wzorców alokacji typowych dla programów Pythona. Alokator używa funkcji malloc () języka C, aby uzyskać duże pule pamięci, a następnie spełnia mniejsze żądania pamięci z tych pul.

poprzez Co nowego w Pythonie 2.3

Wreszcie, w niektórych systemach oba pliki mogą być dowiązane na stałe. Chociaż te dwa pliki mają różne numery i-węzłów w moim systemie Ubuntu 13.04 (czyli są to różne pliki), post comp.lang.python sprzed dwóch lat pokazuje, że kiedyś były one połączone.

James Mishra
źródło