Questions about "compiled" Python (beginner)

HoneyMonster someone at someplace.invalid
Sun Jan 29 19:43:21 EST 2012


On Sun, 29 Jan 2012 14:01:01 -0500, Terry Reedy wrote:

> On 1/29/2012 12:57 PM, HoneyMonster wrote:
>> I am new to Python (Python 2.7 on Linux). Research indicates that:
>>
>> a) "Compiling" Python modules into intermediate bytecode marginally
>> improves load time.
> 
> The improvement is larger the larger the file. You may notice that .pyc
> files are only created when a file is imported, not when it is run
> directly.
> 
>> b) The Python interpreter will use an already-prepared .pyc file if one
>> exists in the same directory as the .py.
>>
>> That then, is presumably why for every .py file in my site-packages
>> directory there is a corresponding .pyc file.
> 
> In 3.2+, .pyc files are tucked away in a __pycache__ directory, with a
> version indicator added to the names so one directory can be used with
> more than one version of python.
> 
>> Question 1: What then, are the .pyo files? I note that many of them are
>> identical to the .pyc, but that some differ.
> 
> They are created when imported into python started with -O (optimize).
> That mainly deletes assertions and maybe something else.
>>
>> Question 2: What happens if the .py file is changed and the .pyc is
>> thus made obsolete. Does the interpreter ignore the .pyc? If so, how
>> does it know? By the timestamp?
> 
> Yes. Yes.

Thanks, Terry and Cousin Stanley for the clear explanation and useful URL.



More information about the Python-list mailing list