Source code for pymor.parallel.manager

# This file is part of the pyMOR project (
# Copyright 2013-2020 pyMOR developers and contributors. All rights reserved.
# License: BSD 2-Clause License (

from pymor.core.base import BasicObject

[docs]class RemoteObjectManager(BasicObject): """A simple context manager to keep track of |RemoteObjects|. When leaving this context, all |RemoteObjects| that have been :meth:`managed <manage>` by this object will be :meth:`removed <pymor.parallel.interface.RemoteObject.remove>`. """ def __init__(self): self.remote_objects = [] def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.remove_objects() def __del__(self): self.remove_objects()
[docs] def remove_objects(self): """Call :meth:`~pymor.parallel.interface.RemoteObject.remove` for all managed objects.""" for obj in self.remote_objects: obj.remove() del self.remote_objects[:]
[docs] def manage(self, remote_object): """Add a |RemoteObject| to the list of managed objects. Parameters ---------- remote_object The object to add to the list. Returns ------- `remote_object` """ self.remote_objects.append(remote_object) return remote_object