上下文是 raspberry pi,以及您對一件事執行操作(例如發送信號)并等待某事發生(例如在世界上最廣泛的意義上在另一個“通道”上接收響應)的情況,即一些可能“看起來像”電話但實際上不是的東西。例如,考慮一個反應游戲,其中付款人必須在 LED 燈點亮后快速按下按鈕。一個 LED 燈亮起系統等待直到按鈕被按下按下按鈕時,等待結束并發生一些事情(例如計算增量時間)我的第一次(也是工作中的)嘗試和我發現的示例按以下方式工作:def button_not_still_pressed(): return True if "Button has not been still pressed", e.g. voltage is low # this function does the check (e.g. reads a pin or performs any other test # depending on the applicationwhile button_not_still_pressed(): pass # Please note: non tome.sleep() heredo_whatever_when_button_is_pressed()在實踐中,它似乎有效。我的擔憂是:無限期/長循環會導致系統掛起嗎?一般來說,python 在上面的 while 循環中做什么?特別是,對于像這樣的設備,執行發送信號并等待這樣的任務的最佳方式是什么?
1 回答

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
無限期/長循環會導致系統掛起嗎?
在更嵌入式的系統中,是的。在 Linux 中,可能不會,因為它沒有做任何重要的事情。
一般來說,python 在上面的 while 循環中做什么?
在消耗 CPU 的緊密循環中運行其解釋器。
特別是,對于像這樣的設備,執行發送信號并等待這樣的任務的最佳方式是什么?
如果您將 Raspberry Pi 的 GPIO 用于您的按鈕,請使用中斷來避免緊密循環:
GPIO.wait_for_edge(channel,?GPIO.RISING)
添加回答
舉報
0/150
提交
取消