Я запускаю скрипт на 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);
Так есть ли лучший способ сделать это?