python 在什么都不做的循环中有多忙?

上下文是 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 application


while button_not_still_pressed():

    pass # Please note: non tome.sleep() here


do_whatever_when_button_is_pressed()

在实践中,它似乎有效。

我的担忧是:

  • 无限期/长循环会导致系统挂起吗?

  • 一般来说,python 在上面的 while 循环中做什么?

  • 特别是,对于像这样的设备,执行发送信号并等待这样的任务的最佳方式是什么?


江户川乱折腾
浏览 101回答 1
1回答

芜湖不芜

无限期/长循环会导致系统挂起吗?在更嵌入式的系统中,是的。在 Linux 中,可能不会,因为它没有做任何重要的事情。一般来说,python 在上面的 while 循环中做什么?在消耗 CPU 的紧密循环中运行其解释器。特别是,对于像这样的设备,执行发送信号并等待这样的任务的最佳方式是什么?如果您将 Raspberry Pi 的 GPIO 用于您的按钮,请使用中断来避免紧密循环:GPIO.wait_for_edge(channel, GPIO.RISING)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python