newbie question - remove a module from ram

Steve Holden sholden at holdenweb.com
Mon May 10 17:59:50 EDT 2004


Terry Reedy wrote:

> "john fabiani" <jfabiani at yolo.com> wrote in message
> news:4AAnc.6791$dH5.4946 at newssvr27.news.prodigy.com...
> 
>>Hi,
>>
>>I believe I have good understanding of import but it occurred to me that
>>I might want to remove an imported module.  I.e I load a module into ram
>>and I no longer need the module.  Modules just stays in ram?  In the
>>windows world I would "thisform.release()"  and the garbage collector
>>would release the ram.  So did I miss something or is there no release
>>method.  How about a method within a class like destroy()?
>>
>>I just got to believe it's there????  But where?
> 
> 
> The delete statement, in general, directs the interpreter to delete the
> association between a name or any other slot and the previously associated
> object.  Ditto for function locals at function return.  It does not tell
> the interpreter what to do with a object when its last association
> disappears.  If, for a particular implementation, it makes sense to talk of
> the object being in 'deletable memory' (and, for humans, it hardly does,
> nor would it for read-only machine memory, nor, possibly, for 'builtin'
> modules), then the standard *allows* but does not *require* deletion.
> 
> CPython currently caches a reference to modules so that code like the
> following won't tear down a module as it returns and have to rebuild it at
> every call:
> 
> def sincos(x):
>     import math as m # for the purpose of this example, assume this is only
> math import
>     return sin(x), cos(x)
> 
> Modules are sufficiently small, sufficiently expensive to set up, and
> sufficiently often reused, that I has not been thought worthwhile to add a
> modwipe function to countervail the cache effect, which itself was added to
> countervail the usual CPython delete-object- with-last-reference behavior.
> 
> Terry J. Reedy
> 
Note also that there is, AFAICT, no way to reclaim space occupied by the 
code of extension modules.

regards
  Steve



More information about the Python-list mailing list