LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
LSST Data Management Base Package
Public Member Functions | List of all members
lsst.ctrl.pool.pool.ReductionThread Class Reference
Inheritance diagram for lsst.ctrl.pool.pool.ReductionThread:

Public Member Functions

def __init__ (self, reducer, initial=None, sleep=0.1)
 Constructor. More...
 
def run (self)
 
def add (self, data)
 
def join (self)
 

Detailed Description

Thread to do reduction of results

"A thread?", you say. "What about the python GIL?"
Well, because we 'sleep' when there's no immediate response from the
slaves, that gives the thread a chance to fire; and threads are easier
to manage (e.g., shared memory) than a process.

Definition at line 420 of file pool.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.ctrl.pool.pool.ReductionThread.__init__ (   self,
  reducer,
  initial = None,
  sleep = 0.1 
)

Constructor.

    The 'reducer' should take two values and return a single
    (reduced) value.

    @param reducer  Function that does the reducing
    @param initial  Initial value for reduction, or None
    @param sleep  Time to sleep when there's nothing to do (sec)

Definition at line 428 of file pool.py.

428  def __init__(self, reducer, initial=None, sleep=0.1):
429  """!Constructor
430 
431  The 'reducer' should take two values and return a single
432  (reduced) value.
433 
434  @param reducer Function that does the reducing
435  @param initial Initial value for reduction, or None
436  @param sleep Time to sleep when there's nothing to do (sec)
437  """
438  threading.Thread.__init__(self, name="reducer")
439  self._queue = [] # Queue of stuff to be reduced
440  self._lock = threading.Lock() # Lock for the queue
441  self._reducer = reducer
442  self._sleep = sleep
443  self._result = initial # Final result
444  self._done = threading.Event() # Signal that everything is done
445 

Member Function Documentation

◆ add()

def lsst.ctrl.pool.pool.ReductionThread.add (   self,
  data 
)
Add data to the queue to be reduced

Definition at line 470 of file pool.py.

470  def add(self, data):
471  """Add data to the queue to be reduced"""
472  with self._lock:
473  self._queue.append(data)
474 
std::shared_ptr< FrameSet > append(FrameSet const &first, FrameSet const &second)
Construct a FrameSet that performs two transformations in series.
Definition: functional.cc:33

◆ join()

def lsst.ctrl.pool.pool.ReductionThread.join (   self)
Complete the thread

Unlike Thread.join (which always returns 'None'), we return the result
we calculated.

Definition at line 475 of file pool.py.

475  def join(self):
476  """Complete the thread
477 
478  Unlike Thread.join (which always returns 'None'), we return the result
479  we calculated.
480  """
481  self._done.set()
482  threading.Thread.join(self)
483  return self._result
484 
485 
daf::base::PropertySet * set
Definition: fits.cc:912

◆ run()

def lsst.ctrl.pool.pool.ReductionThread.run (   self)
Do the work

Thread entry point, called by Thread.start

Definition at line 459 of file pool.py.

459  def run(self):
460  """Do the work
461 
462  Thread entry point, called by Thread.start
463  """
464  while True:
465  self._doReduce()
466  if self._done.wait(self._sleep):
467  self._doReduce()
468  return
469 
def run(self, coaddExposures, bbox, wcs)
Definition: getTemplate.py:603

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