ATLAS Offline Software
Loading...
Searching...
No Matches
COOLRates.RateQueryHandler Class Reference
Inheritance diagram for COOLRates.RateQueryHandler:
Collaboration diagram for COOLRates.RateQueryHandler:

Public Member Functions

 __init__ (self, mySignal, numProc=None, verbose=False)
 createProcesses (self)
 addQueryBundle (self, queryBundle)
 beginQuery (self)
 processResults (self, resultBundle)
 terminateProcesses (self)
 collectResults (self)

Public Attributes

list QueryWorkers = []
 troughQueue = Queue()
 resultQueue = Queue()
list QueryProcesses = []
dict result = {}
int counter = 0
 verbose = verbose
 timeConverter = timeConverter
 mySignal = mySignal
 numProc = numProc

Detailed Description

Definition at line 491 of file COOLRates.py.

Constructor & Destructor Documentation

◆ __init__()

COOLRates.RateQueryHandler.__init__ ( self,
mySignal,
numProc = None,
verbose = False )

Definition at line 492 of file COOLRates.py.

492 def __init__(self,mySignal,numProc=None,verbose=False):
493 COOLQueryHandler.__init__(self,mySignal,numProc=numProc,verbose=verbose)
494 self.QueryWorkers = []
495 for i in range(self.numProc):
496 worker = RateQueryWorker()
497 self.QueryWorkers.append(worker)
498

Member Function Documentation

◆ addQueryBundle()

COOLRates.COOLQueryHandler.addQueryBundle ( self,
queryBundle )
inherited

Definition at line 174 of file COOLRates.py.

174 def addQueryBundle(self,queryBundle):
175 self.counter+=1
176 self.troughQueue.put(queryBundle)
177

◆ beginQuery()

COOLRates.COOLQueryHandler.beginQuery ( self)
inherited

Definition at line 178 of file COOLRates.py.

178 def beginQuery(self):
179 self.createProcesses()
180 for i in range(self.numProc):
181 self.troughQueue.put(True)
182 logger.info('{0} queries distributed over {1} workers'.format(self.counter,len(self.QueryProcesses)))
183 for process in self.QueryProcesses: process.start()
184 try:
185 self.collectResults()
186 except KeyboardInterrupt:
187 logger.critical('Caught signal, terminating processes')
188 self.terminateProcesses()
189 return
190 for process in self.QueryProcesses: process.join()
191 return
192

◆ collectResults()

COOLRates.COOLQueryHandler.collectResults ( self)
inherited

Definition at line 211 of file COOLRates.py.

211 def collectResults(self):
212 finished = 0
213 startingQueries = self.counter
214 target=0.
215 while True:
216 if not self.mySignal.is_alive():
217 raise KeyboardInterrupt
218 break
219 #sys.exit(0)
220 try: resultBundle = self.resultQueue.get(False,0.001)
221 except Empty:
222 sleep(.001)
223 continue
224 if resultBundle is True:
225 finished+=1
226 if finished == self.numProc: break
227 continue
228 self.counter-=1
229 percentComplete = min(100,int(round(float(startingQueries-self.counter)/startingQueries*100+.5)))
230 if percentComplete>=target:
231 target+=5.
232 logger.info('{0}% complete'.format(percentComplete))
233 self.processResults(resultBundle)
234# except KeyboardInterrupt:
235# logger.critical('Caught signal, terminating processes')
236# self.terminateProcesses()
237 return
238
239#====================================================================================================================
240
#define min(a, b)
Definition cfImp.cxx:40
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130

◆ createProcesses()

COOLRates.RateQueryHandler.createProcesses ( self)

Reimplemented from COOLRates.COOLQueryHandler.

Definition at line 499 of file COOLRates.py.

499 def createProcesses(self):
500 self.QueryProcesses = []
501 for i in range(self.numProc):
502 process = Process(target = RateQueryWorker(), args = (self.troughQueue,self.resultQueue,))
503 self.QueryProcesses.append(process)
504#====================================================================================================================
505

◆ processResults()

COOLRates.COOLQueryHandler.processResults ( self,
resultBundle )
inherited

Definition at line 193 of file COOLRates.py.

193 def processResults(self,resultBundle):
194 for resultAlias in resultBundle:
195 if resultAlias not in self.result: self.result[resultAlias]={}
196 self.result[resultAlias].update(resultBundle[resultAlias])
197

◆ terminateProcesses()

COOLRates.COOLQueryHandler.terminateProcesses ( self)
inherited

Definition at line 198 of file COOLRates.py.

198 def terminateProcesses(self):
199 while 1:
200 try:self.troughQueue.get(False)
201 except Empty: break
202 logger.critical('Queue is empty')
203 for i in range(self.numProc): self.troughQueue.put(True)
204 time.sleep(1)
205 for process in self.QueryProcesses:
206 process.terminate()
207 process.join()
208 logger.critical('Processes are joined')
209 raise KeyboardInterrupt
210

Member Data Documentation

◆ counter

COOLRates.COOLQueryHandler.counter = 0
inherited

Definition at line 161 of file COOLRates.py.

◆ mySignal

COOLRates.COOLQueryHandler.mySignal = mySignal
inherited

Definition at line 164 of file COOLRates.py.

◆ numProc

COOLRates.COOLQueryHandler.numProc = numProc
inherited

Definition at line 166 of file COOLRates.py.

◆ QueryProcesses

COOLRates.COOLQueryHandler.QueryProcesses = []
inherited

Definition at line 159 of file COOLRates.py.

◆ QueryWorkers

list COOLRates.RateQueryHandler.QueryWorkers = []

Definition at line 494 of file COOLRates.py.

◆ result

dict COOLRates.COOLQueryHandler.result = {}
inherited

Definition at line 160 of file COOLRates.py.

◆ resultQueue

COOLRates.COOLQueryHandler.resultQueue = Queue()
inherited

Definition at line 158 of file COOLRates.py.

◆ timeConverter

COOLRates.COOLQueryHandler.timeConverter = timeConverter
inherited

Definition at line 163 of file COOLRates.py.

◆ troughQueue

COOLRates.COOLQueryHandler.troughQueue = Queue()
inherited

Definition at line 157 of file COOLRates.py.

◆ verbose

COOLRates.COOLQueryHandler.verbose = verbose
inherited

Definition at line 162 of file COOLRates.py.


The documentation for this class was generated from the following file: