def _incr(self): with self._lock: self.res += 1 def _decr(self): with self._lock: self.res -= 1 def __call__(self, thread_id): logging.info("Start work for thread {}".format(thread_id)) time.sleep(random.random() * 2) self._decr() self.ctb.decr() logging.info("Done work for thread {}".format(thread_id)) return @property def counter(self) -> int: return self.res if __name__ == "__main__": LoggingSetup() ntests = 50 ctb = CountDownBarrier(ntests) ttc = SyncMultiThread(count_down_barrier=ctb, num_tests=ntests) logging.info("Waiting for all") ctb.wait() logging.info("All done") assert ttc.res == 0
def setUpClass(cls): LoggingSetup()
def setUp(cls) -> None: LoggingSetup()
def setUpClass(cls): LoggingSetup() logging.info( TestSrcSinkSelectionPolicy._pi_day.strftime("%m.%d%y%H%M%S")) return