【问题标题】:Emergency stop in PythonPython中的紧急停止
【发布时间】:2021-10-13 14:36:41
【问题描述】:

我的学生正在使用 PyParrot 库来控制无人机。但是,如果他们出错(例如,将无人机编码到墙上/升到天花板等),我们需要故障保险。

之前我使用的是 KeyboardInterrupt,但是今年我们使用的是 Mu Editor。 Mu 编辑器在 ctrl+c 上立即退出并且不运行我的异常中的任何内容。

try:
   # Drone code
   
except KeyboardInterrupt:
    # Landing Code

我还能如何确保 Python 存在“紧急停止”?

【问题讨论】:

  • 不知道# Drone code,怎么知道?
  • 这只有在你的代码中有循环时才有效 (example)。如果您确实有一个循环,但 Mu Editor 没有转到 except 子句,请尝试使用命令行运行 Python 文件。
  • 也许不使用/从编辑器运行代码?使用编辑器编辑代码,python 执行。
  • Drone 代码几乎可以是任何东西,但主要是非常基本的——迭代、分支、输入等。这真的取决于学生在做什么。因此,为什么 KeyboardInterrupt 很棒,因为它可以在他们做错事时让他们摆脱困境(即不要退出循环并让无人机升到天花板,或者越过距离并撞到墙上) .

标签: python mu


【解决方案1】:

一种可能性是在子进程中运行# Drone code,然后让主线程保持打开状态以接收输入。

from multiprocessing import Process

def drone_code():
    # Drone code

if __name__ == '__main__':
    p = Process(target=drone_code)
    p.daemon=True # kill subprocess if main process killed
    p.start()
    input("Press Enter to safely exit...")
    if p.is_alive():
        p.kill()
        #Landing Code

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    • 2012-08-14
    • 1970-01-01
    • 2011-05-10
    • 2019-10-14
    • 1970-01-01
    相关资源
    最近更新 更多