从命令行与Python脚本进行通信的最佳方式?

时间:2018-04-04 09:30:02

标签: python command-line

我很抱歉,如果这是重复的,但我的搜索条件并没有找到我想要的东西。

我只是杀了'我的python脚本使用它的linux进程ID。

这对我有好处,但现在我需要在终止之前腌制某些东西。

从linux命令行与正在运行的Python脚本进行通信的最佳实践是什么?我应该知道一个图书馆吗?

示例操作是向正在运行的脚本发送terminate命令,但也可以看到在不久的将来用于修改配置变量等。

3 个答案:

答案 0 :(得分:2)

一种方法是安装信号处理程序:https://docs.python.org/3/library/signal.html,例如SIGHUP(挂断信号)

答案 1 :(得分:1)

linux / unix中的

kill命令向进程发送信号并处理处理信号(SIGSTPSIGKILL除外)。因此,通过说杀戮过程,您只需发送SIGKILL信号。

因此,为了更好地终止脚本,您应该使用其他信号(例如SIGINT这就像在终端中按 CTRL + C 并处理此信号通过在脚本中分配信号处理程序。有关信号处理程序的更多信息,请使用this link

通过分配信号处理程序,您可以忽略信号或使用自己的自定义操作,例如:清理进程并退出或其他操作。

答案 2 :(得分:1)

没有一种最好的方法。根据您的要求,您可以选择

  • 信号。单个信号可以传送一些信息(一个信号,一个比特;两个信号,两个比特,因为你可以选择哪一个发送,等等),它是单向的;但它是合理的实时和异步,非常适合快速简便的单向通信,可能作为带外信息,除了或更复杂的东西之外。
  • 共享内存是快速有效的双向通信,但在实践中使用起来非常重要,显然限制在同一主机上运行的进程。
  • 套接字非常灵活,通过网络进行通信非常有效,即使在同一主机上,也适用于适量的数据。

这是非常以U *为​​中心的; Windows程序员倾向于使用线程,因此共享内存IPC更多。