def findCachedDomain(self, var_cache_id, region, dataset=None ): cached_var = self.cachedVariables.get( var_cache_id, None ) if cached_var == None: cached_var = CachedVariable( id=var_cache_id, dataset=dataset) self.cachedVariables[ var_cache_id ] = cached_var overlap,domain = cached_var.findDomain( region ) if overlap == Domain.CONTAINED: return cached_var, domain return cached_var, None
def loadStats( self ): worker_stats = self.getWorkerCacheStats() for worker_stat in worker_stats: wid = worker_stat['wid'] cache_stats = worker_stat['stats'] for var_stats in cache_stats: cache_id = var_stats.get('cid',None) cached_cvar = self.cachedVariables.get( cache_id, None ) if cached_cvar is None: cached_cvar = CachedVariable( id=cache_id, variable_spec=var_stats ) self.cachedVariables[ cache_id ] = cached_cvar domain_stats = var_stats['domains'] for domain_stat in domain_stats: cached_cvar.addCachedDomain( domain_stat['region'], region_spec=domain_stat, variable_spec=var_stats )
def getKernelInputs( self, operation, op_index, request ): read_start_time = time.time() use_cache = request['cache'] embedded = request.getBoolRequestArg('embedded') result_names = request['result_names'] regions = request.region cache_type = CachedVariable.getCacheType( use_cache, operation ) variables = [] data_specs = [] if operation is not None: input_dataset = [] input_ids = operation["inputs"] for inputID in input_ids: if inputID[0] == "$": try: inputIndex = int(inputID[1:]) input_dataset.append( request.data.values[inputIndex] ) except Exception, err: raise Exception( "Input ID '%s' syntax error: %s" % ( inputID, str(err) ) ) elif inputID == "*": for input_dset in request.data.values: input_dataset.append( input_dset ) else: input_dataset.append( request.data.getValue( inputID ) )