Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between python3 and python3m executables

People also ask

What is python3 6m?

python3.6m: an interpreted, interactive, object-oriented programming language.

What is Python 3m?

python3 is a symbolic link to python3.3. python3.3 is a hard link to python3.3m. And as @nneonneo 's answer indicating, The m suffix means specifically a "pymalloc" build of Python. Then the links do what they do. Follow this answer to receive notifications.


Credit for this goes to chepner for pointing out that I already had the link to the solution.

Python implementations MAY include additional flags in the file name tag as appropriate. For example, on POSIX systems these flags will also contribute to the file name:

--with-pydebug (flag: d)

--with-pymalloc (flag: m)

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

via PEP 3149.

Regarding the m flag specifically, this is what Pymalloc is:

Pymalloc, a specialized object allocator written by Vladimir Marangozov, was a feature added to Python 2.1. Pymalloc is intended to be faster than the system malloc() and to have less memory overhead for allocation patterns typical of Python programs. The allocator uses C's malloc() function to get large pools of memory and then fulfills smaller memory requests from these pools.

via What's New in Python 2.3

Finally, the two files may be hardlinked on some systems. While the two files have different inode numbers on my Ubuntu 13.04 system (thus are different files), a comp.lang.python post from two years ago shows that they once were hardlinked.