2013-05-21 11 views
68

Jaka jest różnica między wersjami wykonawczymi /usr/bin/python3 i /usr/bin/python3m?Różnica między wykonywanymi python3 i python3m

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

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

Ktoś zapytał similar question on AskUbuntu, ale chciałem dowiedzieć się więcej o różnicy między tymi dwoma plikami.

+7

Zostało to opisane w [PEP] (http://www.python.org/dev/peps/pep-3149/) wymienionym w odpowiedzi na powiązane pytanie. – chepner

+0

Ah, dziękuję! Zanim napisałem to pytanie, przeczytałem kilka pierwszych linii PEP, ale byłem zbyt leniwy, aby przeczytać całość ... –

Odpowiedz

66

Kredyt na to trafia do chepner za wskazanie, że już miałem link do rozwiązania.

Implementacje w języku Python MOGĄ zawierać dodatkowe flagi w nazwie pliku, odpowiednio, . Na przykład, w systemach POSIX te flagi będą przyczyniają się również do nazwy pliku:

--with-pydebug (flag: D)

--with-pymalloc (flag: m)

- -z szerokim-unicode (flag: u)

przez PEP 3149.

chodzi o flagę m konkretnie, to co Pymalloc jest:

Pymalloc, wyspecjalizowanym obiekt podzielnik napisany przez Władimira Marangozov, była funkcja dodana do Pythona 2.1. Pymalloc ma na celu być szybszy niż system malloc() i mieć mniej narzutów pamięci dla wzorców alokacji typowych dla programów w Pythonie. Alokator używa funkcji malloc() C, aby uzyskać duże pule pamięci, a następnie wypełnia mniejsze żądania pamięci z tych pul.

poprzez What's New in Python 2.3

wreszcie dwa pliki mogą być hardlinked na niektórych systemach. Podczas gdy oba pliki mają różne numery i-węzłów w systemie Ubuntu 13.04 (a więc są to różne pliki), comp.lang.python post from two years ago pokazuje, że kiedyś były hardlinkowane.