If语句在满足其定义之前不会停止运行

2024-05-28 19:46:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个基本的面部识别程序,我正在尝试实现一个超时系统来锁定计算机。基本上,它应该等待一秒钟,然后向计数器添加1。如果计数器达到10,则会激活if语句以锁定计算机。但是当运行这个程序时,它不会运行代码的任何其他部分,直到它看到一张脸。我是新来的,所以非常感谢您的帮助

        def facecheck():

            if matches == face_recognition.compare_faces(taylor_face_encoding, known_face_encodings):
                print("Confirmed")
                Confirm = True
                exit()
            else:
                print("Negative")
                correct-=1
                if correct <= -3:
                    print("User disallowed!")
                    subprocess.call('/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend',shell=True)
                    exit()
        while continue1 == 1:
            time.sleep(1)
            print("Counting")
            countdown+=1
            facecheck()

Tags: 代码程序trueif系统def计算机exit
1条回答
网友
1楼 · 发布于 2024-05-28 19:46:32

您的代码似乎与您正在描述的流程并不完全相似,但您手头的问题是,您的代码在单个流程中运行,因此,在循环中,不会执行其他任何操作。为此,有multiprocessing as well as the threading包。这样,您就可以启动一个在其旁边运行的解耦流程。 最简单的例子:

from multiprocessing import Process

def facecheck():
  timer = 0
  while True:
    if timer > 10:
       if face_accepted:
         timer = 0
       else:
         lock()
    timer +=1
    sleep(1)
  [...]

proc = Process(target=facecheck, args=(client, addr))
proc.start()

上面将启动一个进程,等待10秒,然后执行面检查(需要实现face_accepted),如果接受面,则再等待10秒重新检查。如果面不被接受,系统将被锁定(lock()需要),并每秒检查面,直到显示正确的面

相关问题 更多 >

    热门问题