- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在研究 Python 的习语和库,以帮助我设计控制任务的状态机。
我在另一个 SO 问题中找到了很好的建议:Python state-machine design .在答案中,PySCXML建议允许解释 State Chart XML文件。
我关注 PySCXML 自述文件中的以下句子:
you can use the send method of the StateMachine instance to send events to your statemachine [...] Of course, you'll have to do the send from a different thread
这是否意味着我不能让状态机处理同步运行?
当我想象在我的控制任务中使用 PySCXML 时:
(如果 PySCXML 完全可行的话。这将使我能够将整个排序逻辑完全分离到一个 SCXML 文件中。)我需要按顺序处理所有步骤,尤其是 4. 不允许异步运行。
最佳答案
您尝试做的事情很有可能。尽管这确实不会起作用:
xml = '''\
<scxml version="1.0" datamodel="python">
<state id="s1">
<transition event="e" target="f" />
</state>
<final id="f" />
</scxml>
'''
sm = Statemachine(xml)
sm.start()
# never runs
sm.send("e")
相反,这样做:
xml = '''\
<scxml version="1.0" datamodel="python">
<state id="s1">
<transition event="e" target="f" />
</state>
<final id="f" />
</scxml>
'''
sm = Statemachine(xml)
sm.start_threaded()
sm.send("e")
在它自己的 greenlet 中运行状态机的主事件循环,让您可以在主线程中与它交互。 sm.send('e')
将阻塞,直到状态机进入稳定状态(即直到它等待进一步的外部事件)。
关于python - 同步 PySCXML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15003174/
我目前正在研究 Python 的习语和库,以帮助我设计控制任务的状态机。 我在另一个 SO 问题中找到了很好的建议:Python state-machine design .在答案中,PySCXML建
我是一名优秀的程序员,十分优秀!