[Yt-svn] yt-commit r1087 - in trunk/yt: fido lagos
mturk at wrangler.dreamhost.com
mturk at wrangler.dreamhost.com
Wed Jan 7 19:24:08 PST 2009
Author: mturk
Date: Wed Jan 7 19:24:08 2009
New Revision: 1087
URL: http://yt.spacepope.org/changeset/1087
Log:
If running in parallel, turn off the option that saves parameter files in a
persistent store. This should only be problematic if you -- while running in
parallel -- open up a saved / pickled object whose parameter file has not
already been opened during the YT session.
Modified:
trunk/yt/fido/ParameterFileStorage.py
trunk/yt/lagos/ParallelTools.py
Modified: trunk/yt/fido/ParameterFileStorage.py
==============================================================================
--- trunk/yt/fido/ParameterFileStorage.py (original)
+++ trunk/yt/fido/ParameterFileStorage.py Wed Jan 7 19:24:08 2009
@@ -35,7 +35,7 @@
class ParameterFileStore(object):
_shared_state = {}
- _shelve = None
+ _shelf = None
def __new__(cls, *p, **k):
self = object.__new__(cls, *p, **k)
@@ -43,11 +43,12 @@
return self
def __init__(self, in_memory = False):
+ self._do_shelve = ytcfg.getboolean("yt", "StoreParameterFiles")
only_on_root(self.__init_shelf)
def _get_db_name(self):
if not os.access(os.path.expanduser("~/"), os.W_OK):
- return "parameter_files.db"
+ return os.path.abspath("parameter_files.db")
return os.path.expanduser("~/.yt/parameter_files.db")
def wipe_hash(self, hash):
@@ -90,22 +91,33 @@
self.wipe_hash(pf._hash())
self.insert_pf(pf)
+ def __read_only(self):
+ if self._shelf is not None: return self._shelf
+ return shelve.open(self._get_db_name(), flag='r', protocol=-1)
+
+ def __read_write(self):
+ if self._shelf is not None: return self._shelf
+ return shelve.open(self._get_db_name(), flag='c', protocol=-1)
+
def insert_pf(self, pf):
self[pf._hash()] = self._adapt_pf(pf)
def __getitem__(self, key):
- my_shelf = shelve.open(self._get_db_name(), flag='r', protocol=-1)
+ my_shelf = self.__read_only()
return my_shelf[key]
def __store_item(self, key, val):
- my_shelf = shelve.open(self._get_db_name(), 'c', protocol=-1)
+ my_shelf = self.__read_write()
my_shelf[key] = val
def __delete_item(self, key):
- my_shelf = shelve.open(self._get_db_name(), 'c', protocol=-1)
+ my_shelf = self.__read_write()
del my_shelf[key]
def __init_shelf(self):
+ if not ytcfg.getboolean("yt", "StoreParameterFiles"):
+ self._shelf = defaultdict(lambda: dict(bn='',fp='',tt='',ctid=''))
+ return
dbn = self._get_db_name()
dbdir = os.path.dirname(dbn)
try:
Modified: trunk/yt/lagos/ParallelTools.py
==============================================================================
--- trunk/yt/lagos/ParallelTools.py (original)
+++ trunk/yt/lagos/ParallelTools.py Wed Jan 7 19:24:08 2009
@@ -38,6 +38,7 @@
ytcfg["yt","__parallel_rank"] = str(MPI.COMM_WORLD.rank)
ytcfg["yt","__parallel_size"] = str(MPI.COMM_WORLD.size)
ytcfg["yt","__parallel"] = "True"
+ ytcfg["yt","StoreParameterFiles"] = "True"
# Now let's make sure we have the right options set.
if MPI.COMM_WORLD.rank > 0:
if ytcfg.getboolean("lagos","serialize"):
More information about the yt-svn
mailing list