How to clean a module?

ai ai.nature at gmail.com
Thu May 31 22:22:59 EDT 2007


Yes, you are right.
But from this problem, could I infer that the statement "del xxx"
doesn't release the memory which xxx used?


On May 31, 11:21 pm, "Diez B. Roggisch" <d... at nospam.web.de> wrote:
> ai schrieb:
>
> > It assumes that there is a module A which have two global variables X
> > and Y. If I run "import A" in the IDLE shell, then I can use A.X and
> > A.Y correctly. But if I want to change the module A and then delete
> > the variable Y, I find I can use A.Y just the same as before!
> > In fact, I have tried all the following methods but can't remove the
> > A.Y:
> > execute "import A" again
> > "reload(A)"
> > "del A; import A"
> > Yes, if you use "del A.Y", it works. But it is stupid since there are
> > probably many names. In my thought, if no one references objects in A,
> > "del A" will release all memory about A. But it seems that the fact is
> > not. So I can not refresh the namespace to follow changes of a module
> > easily and I will worry about the memory if I del a module.
> > I want to know if there is a way to clear a module entirely.
>
> There might be other answers - but the easiest and IMHO best is to
> simply restart the interpreter. Because whatever you type in there, you
> could or should even (if it reaches some complexity) put in a small test
> script - and execute that from the interpreter at a shell prompt. The
> advantage is that you don't suffer from any side-effects e.g. IDLE has
> (no Tk mainloop for example) and avoid the problems you describe
> entirely. Together with a bunch of others.
>
> If you want/have to, you can drop into interpreter mode after script
> execution with
>
> python -i myscript.py
>
> Diez





More information about the Python-list mailing list