为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

江户川乱折腾 2023-05-09 09:34:47
上下文是 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)


查看完整回答
反对 回复 2023-05-09
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信