Python 陷阱例程

Rob*_*ica 2 python events event-handling

好吧,我以编写ABB 工业机器人为生,我们使用的编程语言称为Rapid

我在 Rapid 中可以做的一件非常酷的事情就是陷阱例程。它就像一个 while 循环,但它不是在检查条件之前遍历整个循环,而是在其等待的事件发生时立即中断。

我想它类似于 javascript 中的事件监听器。就像它在正常程序的后台运行一样。我想用 python 来做这个。

我几乎没有受过正规的计算机教育,所以我不太确定这个概念是什么。抱歉,如果有点模糊,我不太确定如何以清晰的方式提出问题。

Jen*_*ens 6

与大多数语言一样,Python使用处理函数来处理系统信号。有关更多详细信息,请查看“信号”一章,其中讨论了接收和发送信号,并提供了示例,例如此处

\n\n

简而言之,您可以将一个函数绑定到一个或多个信号:

\n\n
>>> import signal\n>>> import sys\n>>> import time\n>>> \n>>> # Here we define a function that we want to get called.\n>>> def received_ctrl_c(signum, stack):\n...     print("Received Ctrl-C")\n...     sys.exit(0)\n... \n>>> # Bind the function to the standard system Ctrl-C signal.\n>>> handler = signal.signal(signal.SIGINT, received_ctrl_c)\n>>> handler\n<built-in function default_int_handler>\n>>> \n>>> # Now let\xe2\x80\x99s loop forever, and break out only by pressing Ctrl-C, i.e. sending the SIGINT signal to the Python process.\n>>> while True:\n...     print("Waiting\xe2\x80\xa6")\n...     time.sleep(5)\n... \nWaiting\xe2\x80\xa6\nWaiting\xe2\x80\xa6\nWaiting\xe2\x80\xa6\n^CReceived Ctrl-C\n
Run Code Online (Sandbox Code Playgroud)\n\n

在您的具体情况下,找出机器人向您的 Python 进程(或监听信号的进程)发送哪些信号,然后按如上所示对它们采取行动。

\n

  • 请在您的答案中添加牛肉@Jens;就目前情况而言,它符合评论的资格。例如,链接到外部代码资源很脆弱,因为链接可能会过时;建议在您的答案中复制并粘贴示例;谢谢。 (2认同)