Returns a :class:`~bang.util.SharedNamespace` for the given
        :attr:`key`.  These are used by
        :class:`~bang.deployers.deployer.Deployer` objects of the same
        ``deployer_class`` to coordinate control over multiple deployed
        instances of like resources.  E.g. With 5 clones of an application
        server, 5 :class:`~bang.deployers.deployer.Deployer` objects in
        separate, concurrent processes will use the same shared namespace to
        ensure that each object/process controls a distinct server.

        :param str key:  Unique ID for the
            namespace.  :class:`~bang.deployers.deployer.Deployer` objects that
            call :meth:`get_namespace` with the same :attr:`key` will receive
            the same :class:`~bang.util.SharedNamespace` object.

def get_namespace(self, key):
        """
        Returns a :class:`~bang.util.SharedNamespace` for the given
        :attr:`key`.  These are used by
        :class:`~bang.deployers.deployer.Deployer` objects of the same
        ``deployer_class`` to coordinate control over multiple deployed
        instances of like resources.  E.g. With 5 clones of an application
        server, 5 :class:`~bang.deployers.deployer.Deployer` objects in
        separate, concurrent processes will use the same shared namespace to
        ensure that each object/process controls a distinct server.

        :param str key:  Unique ID for the
            namespace.  :class:`~bang.deployers.deployer.Deployer` objects that
            call :meth:`get_namespace` with the same :attr:`key` will receive
            the same :class:`~bang.util.SharedNamespace` object.

        """
        namespace = self.shared_namespaces.get(key)
        if namespace:
            return namespace
        ns = SharedNamespace(self.manager)
        self.shared_namespaces[key] = ns
        return ns