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

Langage Perl Discussion :

Création de process


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut Création de process
    J'ai un script que j'aimerai parallélisé, j'ai pensé un temps a ces satané threads mais sa marche pas ce truc comme d'hab (l'espoir fait vivre)

    Je veux donc utiliser des process avec fork(), seulement je me pose la question comment un père peut il générer plusieur fils ?

    j'ai fait comme cela :

    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
    my pid = fork();
     
    if ($pid)
    {
       ....
    }
      else
    {
       my $pi = fork();
       if ($pi)
      {
          ..
      }
        else
      {
         ...
      }
      ...
    }

    Mais ce n'est pas très propre

    Je cherche donc une méthode plus "propre"

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Citation Envoyé par vodevil
    Mais ce n'est pas très propre

    Je cherche donc une méthode plus "propre"
    Bonjour.
    J'ai bien peur que ce soit la seule solution en fait... Ou alors tu peux créer tout un programme pour le fils et utiliser des pipes, à toi de voir
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    J'ai trouvé un module qui fait sa vite et bien

    Parallel::ForkManager

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    as tu un exemple pour l'utilisation de ce module car ça ne fonctionne pas bien chez moi.

    merci

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par vodevil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    my pid = fork();
    if ($pid)
    {
       ....
    }
      else
    {
       my $pi = fork();
       if ($pi)
      {
          ..
      }
    ...
    Mais ce n'est pas très propre
    Je cherche donc une méthode plus "propre"
    Non, c'est même carrément crade... Généralement on fait ça dans une boucle :
    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
    my @pids;
     
    # crée 10 fils
    for (1..10) {
      my $pid = fork();
      unless( defined $pid ) {
        # gestion d'erreur, avec redo souvent
      }
      unless( $pid ) {
        # on est dans le fils
        exit(0);
      }
      push @pids, $pid;
    }
    waitpid($_, 0) for @pids;
    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de PBEL PROCESS
    Par naima2005 dans le forum NetBeans
    Réponses: 0
    Dernier message: 28/07/2010, 22h42
  2. Réponses: 19
    Dernier message: 02/09/2009, 10h29
  3. Réponses: 7
    Dernier message: 03/04/2007, 16h30
  4. problème création de process
    Par skaii dans le forum MFC
    Réponses: 6
    Dernier message: 01/06/2005, 17h24
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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