Re: How to clean a module?
- From: "Diez B. Roggisch" <deets@xxxxxxxxxxxxx>
- Date: Thu, 31 May 2007 17:21:08 +0200
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
.
- References:
- How to clean a module?
- From: ai
- How to clean a module?
- Prev by Date: Re: HTML Form/Page and Navigation with multiple buttons
- Next by Date: Re: Python memory handling
- Previous by thread: How to clean a module?
- Next by thread: Re: How to clean a module?
- Index(es):