Механизм блокировки семафора в Python - PullRequest
0 голосов
/ 30 октября 2019

В настоящее время я работаю над проектом, который предусматривает совместное использование relay_CAN. Мне нужно написать скрипт Python, чтобы заблокировать реле, как только оно будет использоваться другим устройством. реле должно быть заблокировано до тех пор, пока оно не будет разблокировано с другого терминала. Если я вызываю любое другое устройство, когда оно заблокировано, оно должно ждать, пока оно не будет разблокировано. Я пытался использовать, Lock (), Condition (), но ничего не похоже на работу. Есть ли отведения?

sem = threading.Semaphore()

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--connect",
                        help="""connects devices""",
                        dest="connect")
    parser.add_argument("--disconnect",
                        help="""disconnects devices""",
                        dest="disconnect")
    args, _ = parser.parse_known_args()


    if args.connect:
        if sem.acquire(False):
            sem.acquire()
            print "locking.."
            try:
                #todo
            finally:
                print"locked successefully"
        else:
            print "pins are locked"
...