Как завершить сценарий Matlab, вызванный из Python? - PullRequest
0 голосов
/ 29 января 2019

Я запускаю скрипт на python, который вызывает определенное количество потоков, которые выполняют определенный код, и поток matlab, в котором я выполняю вызов подпроцесса, чтобы открыть matlab и запустить скрипт matlab.Теперь мне нужно выйти из сценария matlab, если все остальные потоки в сценарии python завершили выполнение.

На данный момент я использую файлы для решения этой проблемы.У меня есть файл, который содержит значение «1».Сценарий matlab продолжает чтение этого файла и работает до тех пор, пока значение не изменится на «0».Я пишу '0' в файл, как только все другие потоки выполняются в скрипте pyhton.

def main(numOfThreads):
   start_time = time.time()

   launch_matlab_process()
   launch_child_processes(numOfThreads)
   join_child_processes(numOfThreads)
   print_matlab_contents()

   #To close the matlab thread when all other threads are finished
   filename = os.path.join(CURRENT_DIR, "finished.txt")
   f = open(filename, 'w')  # script path
   f.write("0")
   f.close()


#Matlab Script
CURRENT_SCRIPT_DIRECTORY = mfilename('fullpath');
[filepath,name,ext] = fileparts(CURRENT_SCRIPT_DIRECTORY);
file = fullfile(filepath,'file.txt');
file1 = fullfile(filepath, 'finished.txt');

a = 1;
fileID = fopen(file, 'w');
fprintf(fileID,'Matlab File\n');

fileID1 = fopen(file1, 'r+');

%Keep checking file for value
while strcmp(fileread(file1), '1')
 fprintf(fileID,'Line Number: %d\n', a);
   a = a + 1;
 pause(1);
end
fprintf(fileID1, '%c', '1'); %Make file 1 again

fclose(fileID);
fclose(fileID1);

Так есть ли лучший способ сделать это?

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