from threading import Thread, Barrier import logging import time logging.basicConfig(level=logging.INFO, format="[thread: %(threadName)s] [%(asctime)s] %(message)s", datefmt="%F %T") logger = logging.getLogger(__name__) b = Barrier(2) def func(b): logger.info("enter barrier") b.wait() logger.info("leave barrier") if __name__ == "__main__": logger.info("first time") t = Thread(target=func, args=(b, ), name="t1", daemon=False) t.start() time.sleep(1) b.wait() time.sleep(1) logger.info("second time") t = Thread(target=func, args=(b, ), name="t2", daemon=False) t.start() time.sleep(2) b.wait()