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 :

deamon PERL et multi-process ?


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut deamon PERL et multi-process ?
    Bonjour,

    Je souhaite développer un programme en PERL qui traitera (opérations sur les enregistrements) une liste de fichiers en entrée :
    - sous la forme d'un démon Unix afin de traiter les fichiers en fil de l'eau
    - sur plusieurs processus afin de traiter des fichiers en parallèle

    J'ai trouvé quelques exemples sur le Net; avec utilisation de Proc:ID_File and Proc:aemon. Mais impossible de les valider; Proc:ID_File "not found sur le site http://search.cpan.org" !

    Comment faire ce petit programme : la méthode ou un exemple serait bienvenu ?

    Pourquoi en PERL ?, car les fichiers sont très volumineux et j'ai beaucoup d'opérations à réaliser sur les fichiers de sortie.

    Environnement : Debian / Perl 5.10

    D'avance merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Billets dans le blog
    1

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Citation Envoyé par jfmerveille Voir le message
    Je souhaite développer un programme en PERL qui traitera (opérations sur les enregistrements) une liste de fichiers en entrée :
    - sous la forme d'un démon Unix afin de traiter les fichiers en fil de l'eau
    - sur plusieurs processus afin de traiter des fichiers en parallèle
    Je n'ai pas compris : tu souhaites utiliser l'une OU l'autredes alternatives, ou bien l'une ET l'autre ?

    As-tu aussi regardé du coté des threads (use thread) ?
    et de Proc::Daemon

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    Bonjour,

    J'ai revu la solution technique :
    - Abandon du daemon Unix
    - Pour le multi-process, j'ai utilisé le module [Parallel::ForkManager]

    Extrait du code

    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
     
    use Parallel::ForkManager;
     
    # Paramètrage du module [Parallel::ForkManager] sur actions de START, WAIT et FINISH, sur action de répartition
    $pm->run_on_finish(
    	sub { my ($pid, $exit_code, $ident) = @_;
    	#print "***** [INFO3] : Traitement du fichier $ident terminés ".
    	#"sur le PID $pid avec Exit Code: $exit_code\n";
    	}
    );
    $pm->run_on_start(
    	sub { my ($pid,$ident)=@_;
    	#print "***** [INFO3] : Traitement du fichier $ident, sur PID: $pid\n";
    	}
    );
    $pm->run_on_wait(
    	sub {
    	#print "***** [INFO3] : Attente la fin des processus fils ...\n"
    	},100
    );
     
    @fichiers = glob($data_in_ready . "*.cdr");
    foreach my $fichiers (@fichiers) 
    {
    	# Fork
    	my $pid = $pm->start($fichiers) and next;
    	# Fonction traitant les fichiers en entrée		
    	traitement_fichier_entree($fichiers);
    	$pm->finish;
    }
    # Attente de tous les sous-processus avant de continuer
    $pm->wait_all_children;
    Merci pour votre aide

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

Discussions similaires

  1. multi-process en parallèle
    Par besco dans le forum Linux
    Réponses: 1
    Dernier message: 06/10/2008, 22h04
  2. transaction et multi-"process"
    Par lolingman dans le forum 4D
    Réponses: 0
    Dernier message: 02/09/2008, 11h51
  3. Réponses: 9
    Dernier message: 19/01/2007, 20h40
  4. log4j : dailyRollingFileAppender en multi process
    Par hugo123 dans le forum Logging
    Réponses: 2
    Dernier message: 16/08/2006, 13h29

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