我正在运行一个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);
那么有没有更好的方法呢?