如何通过MATLAB在后台执行Python脚本?

时间:2019-05-06 14:10:48

标签: python matlab parallel-processing background-process

我正在大学物理系从事一项研究项目。在实验中,我们使用MokuLab(也称为Moku或Pymoku)来收集数据,并在收集数据时流式传输。 MokuLab可以使用Python进行操作。为了进行数据分析,我们使用MATLAB进行计算并在界面中显示数据。对于我的研究项目,我的工作是制作执行以下操作的MATLAB代码和用户界面:

  1. 启动MokuLab开始收集数据并通过 调用Python脚本。
  2. 将流调用移到后台 避免锁定MATLAB,并允许用户执行任何操作 界面中的其他功能,操作或动作 流正在运行。
  3. 如果用户愿意,可以中途停止播放流。
  4. 对数据进行数据分析并在显示时显示 流正在运行。

总体而言,我对调用python脚本的MATLAB部分没有任何疑问。我当前的问题是,我不知道在进行后台数据分析时如何移动调用流的函数。因此,我想知道是否有人知道如何调用MATLAB中的函数,然后使其在后台运行。我可以通过什么方式做到这一点?

虽然我还没有正式尝试过任何方法,但我一直在寻找可以帮助我完成此任务的选项。我的老师建议的一种选择是使用并行处理。但是,似乎MATLAB初始化parpool花费了很长时间,而且我对这种编程风格也不太熟练。我目前仍在学习。我还考虑过使用计时器函数调用该函数,但是我认为这不会给我太多对流的控制。

为了直观了解我想要的东西,假设我有一个MATLAB函数,可在该函数启动流并进行数据分析:

function initiateMokuStream(obj)
  py.SomeModule.InititateStream();
  print('Stream is running');
  while (StreamRuns == True)
    obj.file1 = open('ch1.txt');
    obj.file2 = open('ch2.txt');
    SecondDemodAnalysis(obj.file1,obj.file2,other args);
  end
  print('Stream is over, there is no more data to collect');
end

预期结果,即调用该函数后将显示'Stream is running'。之后,用户仍然可以执行其他任何操作,而不必等待流结束并打印'Stream is over, there is no more data to collect'

0 个答案:

没有答案