On Tue, Apr 26, 2005, Nick Jacobson wrote: > > I was looking at the atexit module the other day; it seems like an elegant > way to ensure that resources are cleaned up (that the garbage collector > doesn't take care of). > > But while you can mark functions to be called with the 'register' method, > there's no 'unregister' method to remove them from the stack of functions > to be called. Nor is there any way to view this stack and e.g. call 'del' > on a registered function. > > This would be useful in the following scenario, in which x and y are > resources that need to be cleaned up, even in the event of a program exit: > > import atexit > > def free_resource(resource): > ... > > atexit.register(free_resource, x) > atexit.register(free_resource, y)
This seems like the wrong way. Why not do this: class ResourceCleanup: def register(self, resource, func): ... def unregister(self, resource): ... def __call__(self): ... handler = ResourceCleanup) atexit.register(handler) handler.register(x, free_resource) do(x) handler.unregister(x) Probably further discussion should go to comp.lang.python -- Aahz ([EMAIL PROTECTED]) <*> http://www.pythoncraft.com/ "It's 106 miles to Chicago. We have a full tank of gas, a half-pack of cigarettes, it's dark, and we're wearing sunglasses." "Hit it." _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com