原文: https://pythonspot.com/python-finite-state-machine/

简介

有限状态机(FSM)是具有状态,转换,输入和输出的数学计算模型。 这台机器当时始终处于一种状态,并且可以通过转换转移到其他状态。 转换会将计算机的状态更改为另一个状态。

可以使用有限状态机对大量问题进行建模。 自动贩卖机,电梯和交通信号灯是现代生活中使用的状态机的简单示例。 高级用法是人工智能,语言解析和通信协议设计。

有限状态机示例

首先安装 Fysom 模块:

  1. sudo pip install fysom

我们可以用两个状态定义一个有限状态机(FSM):睡眠状态和唤醒状态。 要在状态之间移动,我们将定义转换wakeup()sleep()

Python 有限状态机 - 图1

有限状态机。状态:醒着,睡觉。转换:睡眠,醒来

例:

  1. from fysom import *
  2. fsm = Fysom({'initial': 'awake',
  3. 'final': 'red',
  4. 'events': [
  5. {'name': 'wakeup', 'src': 'sleeping', 'dst': 'awake'},
  6. {'name': 'sleep', 'src': 'awake', 'dst': 'sleeping'}]})
  7. print(fsm.current) # awake
  8. fsm.sleep()
  9. print(fsm.current) # sleeping
  10. fsm.wakeup()
  11. print(fsm.current) # awake

结果:

  1. awake
  2. sleeping
  3. awake

有限状态机

Python 中有几种有限状态机的实现: