Как выполнить скрипт Python в фоновом режиме через MATLAB? - PullRequest
0 голосов
/ 06 мая 2019

Я участвую в исследовательском проекте на физическом факультете моего университета.Для эксперимента мы используем MokuLab (также известный как Moku или Pymoku) для сбора данных и потоковой передачи данных по мере их сбора.MokuLab может работать с использованием Python.Для анализа данных мы используем MATLAB для выполнения расчетов и отображения данных в интерфейсе.Для моего исследовательского проекта моя работа заключается в создании кода MATLAB и пользовательского интерфейса, который выполняет следующие действия:

  1. Инициирует MokuLab, чтобы начать сбор данных и их потоковую передачу, вызывая скрипт Python.
  2. Перемещает потоковый вызов в фоновый режим, чтобы избежать блокировки MATLAB и позволить пользователю выполнять любые другие функции, операции или действия в интерфейсе во время работы потока.
  3. Может остановить поток на полпути, если пользователь пожелает.
  4. Выполнить анализ данных и отобразить их во время работы потока.

В целом, у меня естьНет проблем с частью вызова MATLAB на скрипте Python.Моя текущая проблема заключается в том, что я не знаю, как переместить функцию, вызывающую поток, при выполнении анализа данных в фоновом режиме.Поэтому я хочу знать, знает ли кто-нибудь способ или показать мне пример того, как вызывать функцию в 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'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...