IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Exécution de process en tache de fond/ordinateur en pause


Sujet :

MATLAB

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Points : 242
    Points
    242
    Par défaut Exécution de process en tache de fond/ordinateur en pause
    Bonjour à tous,

    Je rencontre actuellement une petite difficulté quand mon ordinateur se met en pause.

    L'idée est la suivante : j'ai écrit un script matlab qui "gere" un simulateur ecrit en C.
    J'ai maintenant besoin de lancer ce simulateur avec de nombreux jeux de paramètres, et même de le lancer plusieurs fois par jeu de paramètres afin de faire des etudes statistiques sur les entrées (en un mot comme en 100 je fais du Monte-Carlo).

    Le nombre ttal de fois où je lance mon simulateur est de l'ordre de 50*81 = 4050fois, et chaque simu dure à peu près 2 min. Du coup ça me fait grosso modo 140H de temps d'exécution
    le code que j'utilise est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    for i1=1:3
        for i2=1:3
            for i3=1:3
                for i4=1:3
                    % Chaine de caractère correspondant à la simu
                    Chaine = [num2str(i1) num2str(i2) num2str(i3) num2str(i4)];
     
                    %calcul des Params avec lesquels la simu sera lancee
                    %creation du repertoire contenant les entrees
     
                    nom_rep_in = fullfile(pname,'in',Chaine);
                    mkdir(nom_rep_in);
     
                    %creation du repertoire de sortie correspondant
     
                    nom_rep_out = fullfile(pname,'out',Chaine);
                    mkdir(nom_rep_out);
     
     
                    %ecriture des fichiers d'entee                
     
     
                    %% creation des batchs de copie et de lancement
                    %copie des entrees
     
                    %% lancement des batchs
     
                    oldrep = pwd;
                    cd(pname)
                    !copy_in_optim.bat
                    for j = 1:Nb_simus
                        batFile = 'DASH1.bat - Raccourci.lnk';
                        startInfo = System.Diagnostics.ProcessStartInfo('cmd.exe', sprintf('/c "%s"', batFile));
                        if choix_bin == 1
                            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;  %// si on le veut visible, sinon c'est hidden.
                        else
                            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;  %// si on le veut visible, sinon c'est hidden.
                        end
                        proc = System.Diagnostics.Process.Start(startInfo);
                        if isempty(proc)
                            error('Failed to launch process');
                        end
                        while true
                            if proc.HasExited
                                fprintf('\nProcess exited with status %d\n', proc.ExitCode);
                                break
                            end
                            fprintf([num2str(j),' ',Chaine,' ']);
                            pause(.1);
                        end
     
                    end
                    !copy_outMC_optim.bat
                    cd(oldrep)
                    clc
     
                end
            end
        end
    end
    Le problème que je rencontre est le suivant : quand le soir je pars, je dois verouiller mon écran, sinon mon chef me mange en complément de son petit déjeuner. Après 2 h de verouillage, l'ordi se met hors tension. Et quand je reviens le matin, la simu qui était en cours avant la mise hors tension est plantée, bloquant toute la suite de l'execution et me faisant perdre de précieuses heures.

    Ma question est : y a-t-il un moyen de faire dire a matlab que tant qu'il s'exécute, lordi ne doit pas se mettre hors tension?
    Je précise que j'ai d'ores et déjà désactivé le verouillage écran automatique, et que dans les paramètres de gestion de l'alim, j'ai mis toutes les mises en veille automatiques sur "jamais".

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    C'est le système d'exploitation qui gère normalement cela.
    Je doute que tu puisses intervenir via MATLAB.

    Sur quel système d'exploitation travailles-tu ?

    Quand tu dis "hors tension", l'ordinateur est-il réellement éteint ou bien en veille prolongée ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Points : 242
    Points
    242
    Par défaut
    je travaille sous windows 7.

    Et oui quand je parle de mise hors tension, c'est effectivement de la veille prolongée en fait. Le fait de passer en veille prolongée fait planter ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while true
       if proc.HasExited
          fprintf('\nProcess exited with status %d\n', proc.ExitCode);
          break
       end
       fprintf([num2str(j),' ',Chaine,' ']);
       pause(.1);
    end
    du coup, je reste indefiniment dans la boucle et la simu d'apres n'est pas lancée.

    j'ai tenté un "powercfg -h off" en ligne de comande, mais je n'ai pas le bonheur d'être admin, du coup je me prends un getback.

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Points : 242
    Points
    242
    Par défaut
    si certaines personnes ont le même problème, ils peuvent comme moi essayer de bidouiller un truc a partir du module "WinPower" du file exchange

    http://www.mathworks.com/matlabcentr...37647-winpower

Discussions similaires

  1. [Indy] IdSMTP exécution en tache de fond
    Par aityahia dans le forum Delphi
    Réponses: 2
    Dernier message: 07/07/2006, 10h20
  2. [application tache de fond] lancer une application
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 5
    Dernier message: 25/03/2005, 11h13
  3. executer une page en tache de fond
    Par Invité(e) dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/01/2005, 16h23
  4. [Question] serveur en tache de fond
    Par Nicaisse dans le forum Réseau
    Réponses: 11
    Dernier message: 14/08/2003, 10h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo