def test_release_contextmanager(self): class TestedClass(Monitor): def __init__(self, cqueue): self.cqueue = cqueue Monitor.__init__(self) @Monitor.protect def execute(self): self.cqueue.put(1) sleep(1) self.cqueue.get() class TesterThread(Thread): def __init__(self, tc): self.tc = tc Thread.__init__(self) def run(self): self.tc.execute() cq = Queue() cq.put(1) tc = TestedClass(cq) tt = TesterThread(tc) with Monitor.acquire(tc): with Monitor.release(tc): tt.start() sleep(0.4) self.assertEqual(cq.qsize(), 2)