python - Windows机器上UI和Core之间的通信

标签 python user-interface go communication core

我正在开发一个基于 GUI 的应用程序,它是使用 python 和 go 开发的。我正在使用 python(+Kivy) 来实现 UI,并使用 Go 在 Windows 操作系统上实现中间件/核心。

我的问题陈述是:

1) 我想在启动应用程序时运行核心的 exe,它应该保留在后台直到我的应用程序关闭。

2) 当一个事件从应用程序被触发时,一个命令被发送到核心,它轮流在远程设备上执行命令并返回命令执行的结果。

我想知道如何控制 exe 的生命周期以及如何在 UI 和 Core 之间建立通信。

任何想法!!

最佳答案

有很多方法可以解决这个问题,但我建议将其中一个部分 (GUI/Core) 作为主要应用程序,它执行所有初始化并启动另一部分。我建议为此使用核心。

这是您可以使用的示例架构,但您选择的架构在很大程度上取决于应用程序和您的目标。

核心首先运行,执行初始化操作,包括启动 GUI,设置 GUI 之间的通信(使用管道、套接字等),然后等待来自 GUI 的命令。如果 GUI 发出关闭信号,核心可以执行任何必要的清理,然后退出。在这种情况下,exe 的生命周期由 GUI 控制。(当用户点击退出按钮时,GUI 向核心发送信号,让核心知道它应该退出)

如果核心启动了 GUI,那么它可以为其设置 STDIN/STDOUT 管道并在 STDOUT 上监听命令,同时在 STDIN 上发送结果。您还可以采用服务器方法,让核心监听套接字,然后 GUI 向它发送请求并等待响应。使用服务器方法,您可以拥有某种与串行管道不同的并发性,但我认为它可能比管道慢(差异可能可以忽略不计,但如果不知道您到底在做什么就很难说)。

关于python - Windows机器上UI和Core之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319345/

相关文章:

jquery - 你能在 jQuery 中只淡入一个类的背景 css 吗?

vim - snipMate 文件类型设置不正确

amazon-web-services - 如何使用 golang 检查 s3 对象大小

python - 无法导入 torch mac

C++ - 在不使用系统从批处理文件转换的情况下运行程序

python - 使用 matplotlib plt.show() 看不到图

java - 如何从文件中逐行读入 JTextArea (GUI)?

python - pandas DataFrame 列中值的频率计数

java - JComboBox 项目未显示在 JTattoo LookAndFeel 中

go - Go 中来自 Kubernetes 的 Cloud SQL 连接 - 错误 403 : Insufficient Permission