Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1466 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  passage d'une hash en paramètre à une autre script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage d'une hash en paramètre à une autre script

n°1211574
ledzep2
Posté le 30-09-2005 à 13:03:55  profilanswer
 

[url]Salut tout le monde!!
Je suis très enthousiaste à l'idée d'avoir...enfin...la réponse à mon problème!! :bounce:  
J'ai vu que sur ce forum y avait de la matière grise, alors je me lance!!
Voilà :
J'ai un script1.pl qui crée une hash %matrix énorme.Dans ce script, à l'aide du module threads, je crée un thread qui lance un programme script2.pl indépendant de la suite du fonctionnement de script1.pl.
Je voudrais passer %matrix (ma hash :pt1cable: ) à ce programme.
Le script1.pl se termine et le script2.pl poursuit lui son petit bonhomme de chemin en décorticant la hash transmise.
Pourriez vous m'indiquer une synthaxe précise et complète qui permettrait de résoudre ce problème?
 
Merci :sol:  
 
 
PS: on m'a parlé de référence, mais j'y comprend rien de rien!! :pfff: [/url]

mood
Publicité
Posté le 30-09-2005 à 13:03:55  profilanswer
 

n°1212341
couak
Posté le 01-10-2005 à 11:12:05  profilanswer
 

les références c'est comme les références (ou pointeurs) en C : au lieu de passer une copie en mémoire de ton objet, tu lui passes directement l'adresse mémoire où elle se trouve, et donc tu manipules directement l'objet
 
ensuite pour ton problème, perso je ne connais pas de moyen "élégante" pour passer un hash à un autre programme perl, hormis de cracher le contenu du hash dans un fichier et passer le fichier en paramètre
généralement mon hash est encore en mémoire au moment où j'appelle une autre routine plutôt que d'appeler un autre fichier, cela m'évite de faire des choses compliqués pour le passage de paramètres
sinon je suis preneur si qqun a une solution plus élégante que le passage par fichier

n°1212342
couak
Posté le 01-10-2005 à 11:13:29  profilanswer
 

ptet qu'une serialization serait intéressante : http://search.cpan.org/~neely/Data [...] ializer.pm

n°1212501
ledzep2
Posté le 01-10-2005 à 17:17:01  profilanswer
 

En effet pour l'instant je passe par un fichier intermédiaire mais qu'est ce que ça ralenti!!
Je vais voir ton lien merci!

n°1212502
ledzep2
Posté le 01-10-2005 à 17:19:27  profilanswer
 

J'ai utilisé le module storable pour récupéré de façon ultra rapide ma hash malheureusement ça passe par un fichier.
(utilisation de store and retrieve)
Non, vraiment il faudrait le passage de la référence en paramètre!!
Mais je sais pas faire ça...

n°1212542
couak
Posté le 01-10-2005 à 18:24:29  profilanswer
 

bah un hash ca se passe en paramètre de fonction y'a aucun soucis
 
si tu tiens à passer par un fichier, fais plutôt un Data::Dumper
 

n°1213076
pospos
Posté le 02-10-2005 à 20:13:19  profilanswer
 

Pourkoi data dumper?
storable est bcp plus efficace
Tu peux aussi passer par une variable d'envirionnement
 
genre $ENV{data_perl} = nfreeze(\%hash);

n°1213445
ledzep2
Posté le 03-10-2005 à 11:41:24  profilanswer
 

Là pospos tu m'intéresses!!
Peux tu m'en dire plus?

n°1214006
pospos
Posté le 03-10-2005 à 23:24:27  profilanswer
 

je viens de relire ta question initiale.
Pourkoi utilise tu une thread pour lancer ton second programme??
 
si tu est sous linux je te conseil plutot un fork+exec
et si tu es sous windows (et activeperl) tu peu utiliser system(1, ...)
 
en gros: system(1, "perl script2.pl" );
et il se lancera en // du script courant
 
mais tout de meme, et avant de partir dans des histoires de serialization de données, pourkoi diable a tu besoin d'un second script independant? N'y aurait il pas moyen de faire autrement? explique un peu ton systeme


Message édité par pospos le 03-10-2005 à 23:25:02
n°1214388
ledzep2
Posté le 04-10-2005 à 14:14:36  profilanswer
 

Salut!!
C'est un système modulaire de décorticage de texte.
Si tu veux il y a beaucoup de texte : titre+texte.
Le 1er module décorike le 1er texte puis lance le 2eme module.Puis le 1er module décortik le 2eme texte pendant que le 2eme module traite le 1er texte, puis le 1er module lance un autre 2eme module (et ce independament du 1er 2eme module) traitant le 2eme texte.Le 1er module traite alors le 3eme texte, pendant que le 1er 2eme module lance un 3eme module traitant le 1er texte.le 1er 2eme module s'éteint alors que le 3eme autonome continu son chemin. En parallèle le 2eme 2eme module continue son oeuvre sur le 2eme texte...
Ainsi desuite...vois tu?

mood
Publicité
Posté le 04-10-2005 à 14:14:36  profilanswer
 

n°1214480
pospos
Posté le 04-10-2005 à 14:51:53  profilanswer
 

t'es sous windows?
et quel est l'interet de faire ca en // ?
en koi consiste ce "decorticage"?

n°1214522
ledzep2
Posté le 04-10-2005 à 15:10:16  profilanswer
 

Je suis sous mac.
Intérêt professionnel!!Textmining.
Décorticage=extraction de caractères spéciaux, extraction de données pertinentes...

n°1214525
pospos
Posté le 04-10-2005 à 15:11:31  profilanswer
 

ok, mais pourkoi le faire ne // au lieu de le faire simplement en sequentiel, texte apres texte?

n°1214675
ledzep2
Posté le 04-10-2005 à 15:59:10  profilanswer
 

pour gagner du temps et être le plus rapide possible vu que la base texte est énorme

n°1214692
pospos
Posté le 04-10-2005 à 16:15:30  profilanswer
 

et est tu certainq ue ca ira plus vite en le faisant en //?
Si c'est juste du caclul bourrin alors ca n'ira pas plus vite, ca ira meme sans doute moins vite que de le faire en sequentiel (à moins que tu ai une machine multiproc, et dans ce cas tu aurai tinteret à utiliser un process par CPU, et pas plus)
 
D'ou viennent ces textes? de fichiers? d'une base de donnée?

n°1214757
ledzep2
Posté le 04-10-2005 à 17:19:35  profilanswer
 

Ils viennent d'une bdd.
C'est ce qui m'arrive...ça ne va pas plus vite...
Ce que tu veux dire c'est qu'un process de textmining kelkil soit utilise la totalité des capacités du proc?

n°1214803
ledzep2
Posté le 04-10-2005 à 17:58:56  profilanswer
 

Et sinon tu pourrais mieux m expliquer comment tu ferais avec les ref?

n°1214818
pospos
Posté le 04-10-2005 à 18:06:03  profilanswer
 

non
les ref n'ont d'existance qu'au sein d'un meme processus.
Si tu veux partager des valeurs entre differents processus alors tu n'a d'autre moyen que de serialiser le contenu de ta ref, l'envoyer (par fichier, socket, variable d'environnement, ou ce que tu veux) et le deserialiser de l'autre coté. C'est ni tres efficace ni tres propre...
 
Donc si tu veux absolument faire plusieurs choses à la fois tu devrait plutot tout faire avec des threads.
mais franchement je suis persuadé que tu irais plus vite en faisant ca en sequentiel (et en le faisant bien).

n°1214843
pospos
Posté le 04-10-2005 à 18:21:37  profilanswer
 

ledzep2 a écrit :

Ils viennent d'une bdd.
C'est ce qui m'arrive...ça ne va pas plus vite...
Ce que tu veux dire c'est qu'un process de textmining kelkil soit utilise la totalité des capacités du proc?


 
j'avais pas vu ce msg
 
post un bout de code et on pourra peut etre t'aider à optimiser un peu ton approche

n°1215295
ledzep2
Posté le 05-10-2005 à 11:40:45  profilanswer
 

Beh si tu veux quand j utilise un script qui contient tous les modules à la suite et qu'il traite l'ensemble des textes module par module, c'est assez performant, c'était juste que je me disais que pour optimiser encore le process je pourrais découper chaque module pour en faire un script indépendant.
Mais bon tu m'as bien expliqué que ça n'irait pas plus vite.
Pour info peux tu me dire comment  je peux utiliser les variables d environnement..?
Le code est trop long...

n°1215345
pospos
Posté le 05-10-2005 à 12:18:22  profilanswer
 

les variables d'environnement sont accessible par une hash speciale en perl: %ENV
si tu met qqchose dedans ou que tu modifie une entrée elle restera modifiée pour al suite de ton prog (ou pour tout autre prog que tu executera dans ton script). par contre elle sera remise à sa valeur initiale kand tu quittera ton prog
 
c'est utiliser pour passer les parametres à un script CGI par exemple

n°1215411
ledzep2
Posté le 05-10-2005 à 13:03:31  profilanswer
 

dc on y a accès n'importe quand...le seul truc c'est qu'il faut se méfier qu'entre deux fins de modules l'un des modules suivant ne prenne pas la variable de l'autre...

n°1215564
pospos
Posté le 05-10-2005 à 14:39:29  profilanswer
 

attend, si tu reste dans un seul et meme process alors tu n'a pas aucune raison d'utiliser ce mechanisme!
tu appel simplement les fonctiosn de tes differents modules en leur passant les parametres que tu veux (et des references si tu le veux)

n°1215566
ledzep2
Posté le 05-10-2005 à 14:41:16  profilanswer
 

oui oui ça d'accord...mais je te parlais de l'autre possibilité qui était de faire un script par module...

n°1215570
pospos
Posté le 05-10-2005 à 14:44:01  profilanswer
 

dasn tous les cas c'est une mauvaise solution.
mais normalement les modification de %ENV n'affecent que le programme en cours et ceux qui seront executés depuis celui ci, pas les autres. Apres tu peux imaginer identifier tes clé de maniere unique (en ajoutant un PID par exemple) mais bon...

n°1215640
ledzep2
Posté le 05-10-2005 à 15:43:58  profilanswer
 

vas y vas y ça m'intéresse, cette histoire de PID, t'as un peu plus de détails?

n°1215769
pospos
Posté le 05-10-2005 à 17:31:43  profilanswer
 

non, c'est le genre de bidouille pourrie qu'on fait au cas par cas, et avec honte. ca depend compeltement de ce que tu veux faire

n°1215825
ledzep2
Posté le 05-10-2005 à 18:35:09  profilanswer
 

T as un lien ou je peux me renseigner?

n°1216135
pospos
Posté le 06-10-2005 à 08:45:41  profilanswer
 

non désolé
tu peux toujours regarder perlipc (perldoc peripc) ou le module thread pour des strategies plus fines

n°1216423
ledzep2
Posté le 06-10-2005 à 12:09:11  profilanswer
 

En tout cas merci pour tout cher pospos

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  passage d'une hash en paramètre à une autre script

 

Sujets relatifs
Basculer avec un script des données d'1 BDD1 vers 1 BDD 2 et cela autoScript de news et de galerie
Limiter l'execution d'un script phpDelphi & Crystal - passage de parametres
[RESOLU] Informations d'execution d'un script en continuScript de génération de formulaire - Besoin de vos avis
récupérer des entiers depuis un paramètre de la fonction mainRecuperation chemin execution de script
[c++/Python] Passer une instance c++ à un script pythonPassage de UTF8 a ASCII
Plus de sujets relatifs à : passage d'une hash en paramètre à une autre script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR