# Resource management

See also

`wand.resource` — Global resource management

  There is the global resource to manage in MagickWand API. This module implements automatic global resource management through reference counting.

Objects Wand provides are resources to be managed. It has to be closed (destroyed) after using like file or database connection. You can deal with it using `with` very easily and explicitly:

    with Image(filename='') as img:
        # deal with img...

Or you can call its `destroy()` (or `close()` if it is an `Image` instance) method manually:

    try:
        img = Image(filename='')
        # deal with img...
    finally:
        img.destroy()

Note

It also implements the destructor that invokes `destroy()`, and if your program runs on CPython (which does reference counting instead of ordinary garbage collection) most of resources are automatically deallocated.

However it’s just depending on CPython’s implementation detail of memory management, so it’s not a good idea. If your program runs on PyPy (which implements garbage collector) for example, invocation time of destructors is not determined, so the program would be broken.