On Mon, Feb 3, 2014 at 10:40 AM, Roy Smith <r...@panix.com> wrote: > I'm reasonably sure you posted this as humor, but there is some truth in > what you said. In the crypto/security domain, you often want to keep a > key or cleartext around only for the time it's needed, and scrub the > memory it was occupying as soon as it is no longer in use. > > I don't know how you would do that in Python.
I did, but you're right. It's fundamentally not possible in pure Python, because there's no way to flag a block of memory as "do not page this to disk". For what you're talking about to be at all possible, you would need support from the language, from the OS, and possibly from the CPU as well. I'm sure this sort of thing exists, but if it does, it'll probably be something that Python itself wouldn't concern itself with - you'd get it via openssl or something. There have been occasional times I've wanted an "explicit destruction" feature. Rather than the facetious exception I listed above, it'd be better to have all those references (including the original one in a, since there's nothing special about that) turn into some kind of "null state" - either None, or a special object that marks itself as a destructed/destroyed (terminology debates aside) object. With custom types, I can mark them off with a special flag, and check that all the time; but I can't, for instance, have a dict that maps some lookup keyword to its output file, and then destroy output files to remove all their references from everywhere in the dict. (I have had something along these lines, a bit more complicated than this, but not in Python.) But I do like the idea of an arsonist being unable to destroy a painting because of the reference loop between its catalog number on the back and the catalog itself. ChrisA -- https://mail.python.org/mailman/listinfo/python-list