Lancer un logiciel en boucle avec un batch

ShiningLink Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -  
ShiningLink Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Comme je manipule de très grosses quantités de données que je traite sous Matlab, j'arrive très rapidement à un "Out of Memory", qui nécessite le redémarrage de Matlab.

J'ai réussi à découper mes scripts de sorte à ce que n'importe lequel des scripts puisse être exécuté après un redémarrage de matlab. En revanche, j'ai toujours besoin de fermer puis relancer matlab après l'exécution d'un des scripts avant de passer au suivant.

Du coup, ce que je voudrais faire, c'est d'automatiser tout ça en créant un batch qui :
- lance matlab,
- exécute un script,
- UNE FOIS L'EXECUTION TERMINEE, ferme Matlab,
- relance Matlab,
- exécute un nouveau script
- etc...

Là où je bloque, c'est que dans mes quelques essais le batch s'exécute entièrement avant de lancer mes instances Matlab.
Du coup, j'ai 3 Matlab d'un coup qui se lancent, et ça ne résoud pas mon problème de RAM.

Une idée?

Merci d'avance !
A voir également:

1 réponse

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
essayer avec
start /wait matlab
sinon dans le script, à la fin, exécuter une commande qui tue matlab ?
1
ShiningLink Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci pour la réponse, mais aucune des solution ne fonctionne.

En fait j'ai déjà essayé la commande "start /wait ..."
ça fonctionne très bien avec Excel, mais bizarrement pas avec Matlab.
En gros, j'ai essayé ce script :
start /wait excel.exe
start /wait excel.exe


Dans ce cas, une instance excel s'ouvre, je peux faire ce que je veux avec, et au moment où je la ferme, une seconde instance s'ouvre. C'est exactement ce que je veux.
Après, j'ai essayé ça :
start /wait matlab.exe
start /wait matlab.exe


Et là, sans aucune raison, 2 instances matlab se lancent simultanément....

Sinon je ne vois pas trop pourquoi kill le processus matlab.exe à la fin du batch, le but étant surtout de m'assurer que l'instance en cours ait fini son script avant qu'une autre se lance : /
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
je ne connais pas matlab, mais n' a -t-il pas une option qui exécute le script en mode batch et termine :
matlab -r script
0
ShiningLink Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

Si effectivement il y a une commande ('exit') qui pemet de fermer matlab à la fin de l'exécution du script, mais encore une fois, ça n'est pas mon problème... Je veux m'assurer que la seconde instance Matlab ne se lance qu'une fois la première fermée, car tout est un problème de RAM. Si les 2 instances se lancent en même temps, la RAM disponible sera divisée par 2 et mes 2 instances Matlab seront "out of memory"...
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
j'ai bien compris, mais avec l'option -r script, est-ce que matlab termine, donc exit, avant d'exécuter le suivant ?
sinon vérififer avec tasklist si il tourne et le tuer avec taskkill
0
ShiningLink Messages postés 48 Date d'inscription   Statut Membre Dernière intervention   1
 
Non, la commande "exit" à la fin du script Matlab me permet de fermer l'instance qui a exécuté le script, mais ça ne lance pas les instances séquentiellement pour autant.
Finalement, à défaut de mieux, j'ai utilisé cette méthode trouvée ici :
https://www.mathworks.com/matlabcentral/answers/5982-batch-files-and-matlab-sequential-execution-and-start-wait

L'idée est d'avoir une instance matlab qui tourne en permanence, et qui va appeler séquentiellement des batch, qui eux même vont appeler une seule instance matlab.
Entre chaque appel de batch, j'évalue périodiquement le nombre d'instances matlab lancée dans le task manager ([r,s] = system('tasklist /FI "imagename eq matlab.exe" /fo table /nh').

Je suis toujours preneur d'un moyen plus propre de réaliser tout ça :)
0

Discussions similaires