卡在循环中线程化继续,而循环阻止代码向前移动(Python)

2024-10-02 10:32:05 发布

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


编辑: 我显然没有意识到守护进程线程。。这解决了主要问题。。 现在让人困惑的是,如何保持循环检查按钮是否按下,是否按下=)


当我按下一个按钮(连接到引脚的紧急停止按钮)时,我正试图停止raspberry pi运行代码

到目前为止还没有成功(在我的示例代码中,我使用代码切换按钮的灯光,以使测试更容易)

线程似乎工作得很好,但是安装在pi中运行代码的shell程序在实际执行之前,首先“测试运行”代码以检查错误。在我的whilenot read_button()代码中,代码的“检查”卡在“whilenot”上,直到我按下按钮;不理想

反转代码并使用while read_button()或只使用if read_button()实际上不会响应我的按钮按下,因为代码很可能在检查后完成,而不是连续检查

所以。。如何解决这个问题?一个continues循环会阻止我的代码继续运行,直到while循环中断(我确实在最后加入了线程..)。非连续循环不起作用,因为它不会连续检查按钮按下情况

使事情变得更糟;在执行紧急停止后,我希望线程在之后继续检查按钮按下情况(用户可能决定恢复程序,并在同一代码中稍后再次点击紧急停止)

我觉得我自己陷入了一个无休止的循环,试图解决这个问题

(很抱歉帖子太长,也很抱歉使用了noob术语,我对这一点非常陌生;3周前才开始编程)

提前非常感谢

def button_check():
    while not read_button():        #developer API
        if read_button():
            set_button_light(blue=True)   #developer API



t = Thread(target=button_check)
t.start()

time.sleep(20)      #just to give me time to test

t.join()

Tags: to代码apideveloperreadiftimecheck

热门问题