2013-05-21 9 views
68

Qual è la differenza tra gli eseguibili /usr/bin/python3 e /usr/bin/python3m?Differenza tra eseguibili python3 e python3m

Li sto osservando su Ubuntu 13.04, ma Google suggerisce che esistono anche su altre distribuzioni.

I due file hanno lo stesso md5sum, ma non sembrano collegamenti simbolici o hard link; i due file hanno numeri di inode diversi restituiti da ls -li e il test find -xdev -samefile /usr/bin/python3.3 non restituisce altri file.

Qualcuno ha richiesto un similar question on AskUbuntu, ma volevo saperne di più sulla differenza tra i due file.

+7

Questo è descritto in [PEP] (http://www.python.org/dev/peps/pep-3149/) menzionato nella risposta alla domanda collegata. – chepner

+0

Ah, grazie! Prima di scrivere questa domanda, ho letto le prime righe del PEP, ma ero troppo pigro per leggere tutto ... –

risposta

66

Il credito per questo va a chepner per indicare che avevo già il collegamento alla soluzione.

Implementazioni di Python POSSONO includere flag aggiuntivi nel tag nome come appropriato. Per esempio, su sistemi POSIX queste bandiere saranno contribuirà anche al nome del file:

--with-pydebug (bandiera: d)

--with-pymalloc (bandiera: m)

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

via PEP 3149.

Per quanto riguarda la bandiera m specificamente, questo è ciò che è Pymalloc:

Pymalloc, un oggetto allocatore specializzata scritto da Vladimir Marangozov, era una caratteristica aggiunta a Python 2.1. Pymalloc è destinato a essere più veloce del sistema malloc() e ad avere meno overhead di memoria per i pattern di allocazione tipici dei programmi Python. L'allocatore utilizza la funzione malloc() di C per ottenere vasti pool di memoria e soddisfa quindi le richieste di memoria più piccole di tali pool da .

via What's New in Python 2.3

Infine, i due file possono essere un collegamento fisico su alcuni sistemi. Mentre i due file hanno numeri di inode diversi sul mio sistema Ubuntu 13.04 (quindi sono file diversi), uno comp.lang.python post from two years ago mostra che una volta erano hardlink.