@@ -2147,7 +2147,18 @@ def restore_sampler(fname, pool=None):
21472147 f'does not match the current dynesty version'
21482148 f'({ DYNESTY_VERSION } ). That is *NOT* guaranteed to work' )
21492149 if pool is not None :
2150- mapper = pool .map
2150+ queue_size_old = getattr (sampler , 'queue_size' )
2151+ try :
2152+ # we first try to get the new queue_size
2153+ # that may fail if the pool has no information about the size
2154+ mapper , queue_size_new = _parse_pool_queue (pool , None )
2155+ except ValueError :
2156+ # if first failed we are using the new queue_size
2157+ mapper , queue_size_new = _parse_pool_queue (pool , queue_size_old )
2158+
2159+ if queue_size_new is not None and queue_size_new > queue_size_old :
2160+ warnings .warn (
2161+ f'Restoring the sampler with queue_size { queue_size_old } ' )
21512162 else :
21522163 mapper = map
21532164 if hasattr (sampler , 'sampler' ):
@@ -2206,3 +2217,28 @@ def save_sampler(sampler, fname):
22062217 except : # noqa
22072218 pass
22082219 raise
2220+
2221+
2222+ def _parse_pool_queue (pool , queue_size ):
2223+ """
2224+ Common functionality of interpreting the pool and queue_size
2225+ arguments to Dynamic and static nested samplers
2226+ """
2227+ if queue_size is not None and queue_size < 1 :
2228+ raise ValueError ("The queue must contain at least one element!" )
2229+ if pool is None :
2230+ if queue_size > 1 :
2231+ raise ValueError ("`queue_size > 1` but no `pool` provided." )
2232+ mapper = map
2233+ queue_size = 1
2234+ elif pool is not None :
2235+ mapper = pool .map
2236+ if queue_size is None :
2237+ queue_size = getattr (pool , '_processes' ) or getattr (pool , 'size' )
2238+ if queue_size is None :
2239+ raise ValueError (
2240+ "Cannot initialize `queue_size` because "
2241+ "`pool.size` or pool._processes has not been provided. "
2242+ "Please `define `pool.size` or specify `queue_size` "
2243+ "explicitly." )
2244+ return mapper , queue_size
0 commit comments