如何终止从python调用的matlab脚本?

时间:2019-01-29 16:01:06

标签: python matlab

我正在运行一个python脚本,该脚本调用执行一定代码的一定数量的线程以及一个matlab线程,在其中我进行子流程调用以打开matlab并运行matlab脚本。现在,如果python脚本中的所有其他线程已执行完毕,则需要退出matlab脚本。

到目前为止,我正在使用文件来解决此问题。我有一个包含“ 1”值的文件。 matlab脚本会继续读取该文件并一直运行,直到值更改为“ 0”为止。在pyhton脚本中执行了所有其他线程后,我正在向文件写入“ 0”。

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);

那么有没有更好的方法呢?

0 个答案:

没有答案