Я развертываю Matlab Code на Raspberry Pi, используя Matlab Coder. Я использую некоторый код Python и выполняю его с помощью системной команды в Matlab. Это прекрасно работает, и я могу восстановить данные, возвращаемые скриптом Python. Приведенный ниже код Matlab развертывается без проблем.
function processTest1() %#codegen
fidLog = fopen( 'processTest1.log', 'w' );
% create log file
if coder.target( 'MATLAB' )
fprintf( fidLog, '%s \n', 'running on pc' );
else
fprintf( fidLog, '%s \n', 'running on pi' );
end
% Create a Raspberry Pi object
r= raspi();
for loop = 1 : 1000
fprintf( fidLog, 'iteration = %i \n', int16( loop ) );
fprintf( fidLog, '%s \n', 'executing python script...' );
% execute python script
result = system( r, 'python testPythonScript.py' );
fprintf( fidLog, '%s \n', result );
system( r, 'sleep 0.1' );
end
fclose( fidLog );
end
Код Python (testPythonScript.py) в этом случае просто возвращает случайное целое число
import random
print random.randint(1,10)
Однако каждый раз, когда выполняется системная команда, процесс defunc остается позади. Со временем эти процессы накапливаются и после примерно 500 вызовов скрипт python больше не выполняется. Есть ли способ избежать накопления этих зомби-процессов?