使用和不使用GUI运行QProcess

时间:2014-08-14 15:47:03

标签: qt user-interface

我一直在使用QProcess作为启动计算密集型任务的一种方式,这种方式在创建它们的GUI关闭后继续。我现在想知道我是否可以改进这一点,以便不能启动太多的工作。

假设我有20个可用核心。用户1开始计算,该计算被分解为30个进程并退出GUI。目前我正在使用bash来控制所有这些,因此GUI只执行一个bash脚本,该脚本计算正在运行的进程数。如果另一个用户在此期间登录并启动另一个大型作业,则整个工作流程变得相当混乱,因此如果脚本已在运行,则当前拒绝提交。此外,没有办法使用GUI来监视进程,因为它们现在由bash运行。

理想情况下,我希望改进流程,以便用户1提交他们的流程。一个单独的后台进程管理各个计算任务的启动 - 所有这些任务现在都是QProcesses。我遇到的问题是,如果有其他用户登录。与“请稍后再试”相反,我想获取现有的管理QProcesses并将任何新作业附加到该队列。这是我能用QProcess和D-bus做的吗?如果是这样的话,对于这样一个过程来说什么是好的设计。

由于

1 个答案:

答案 0 :(得分:1)

你要问的是两门课程; Gui客户端和服务器应用程序。

登录用户与Gui客户端界面交互,以启动和组织进程。 Gui客户端创建消息并将它们发送到服务器应用程序,该应用程序通过使用QProcess创建和管理进程来响应。所以Gui客户端只是服务器应用程序的接口。

当然,您需要Gui应用程序和服务器应用程序相互通信。虽然有多种可用的进程间通信方法,但Qt有QLocalServer和QLocalSocket,它们可以分别由服务器和客户端应用程序使用。