[Débutant] Lancer des fonctions simultanément

Lancer des fonctions simultanément [Débutant] - Perl - Programmation

Marsh Posté le 25-09-2005 à 16:19:14    

Bonjour,
 
J'ai une fonction qui peut mettre pas mal de temps à tourner (jusqu'à 1 minute). Et j'ai besoin de l'exécuter plusieurs fois avec des paramètres différents.
 
J'aurais donc aimé en lançant plusieurs de manière désynchronisée.
 
J'ai essayé avec Async.pm mais dans 15-20% des cas, ça semble planter (résultat vide). (J'ai l'impression que lorsqu'une fonction finit, elle peut avoir un effet de bord sur une de ses copines)
 
Y aurait-il un autre moyen en perl de faire du simultanée ?
 
Merci d'avance.

Reply

Marsh Posté le 25-09-2005 à 16:19:14   

Reply

Marsh Posté le 25-09-2005 à 16:32:46    

lancer plusieurs processus (~fork) ou threads en parallèle?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 25-09-2005 à 16:34:36    

oui mais faut que tes fonctions soient réentrantes...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 25-09-2005 à 16:35:38    

oui c'est ça, lancer des threads en parallèle.
Ma fonction doit être réentrante : ça veut dire quoi ?

Reply

Marsh Posté le 25-09-2005 à 18:48:05    

Normalement Async.pm marche pas mal pour ca, sauf evidemment sous windows.
tu a aussi la fonction async du module de thread.
 
tu es sur quel plateforme et que veux tu executer exactement?
 
Si c'est des trucs reseaux ou autre il y a peu etre moyen de faire autrement (mode non bloquant, etc..)


Message édité par pospos le 25-09-2005 à 18:49:02
Reply

Marsh Posté le 25-09-2005 à 22:31:01    

je travaille sous Linux.
j'aimerais tester la disponibilité d'URLs.
J'utilise PWL (c'est pas une obligation, si y'a mieux, je ne suis pas contre !).
Vu que ça freeze pendant quelques secondes si le site est indisponible, j'aurais aimé en lancer plusieurs en même temps.
voili voila.

Reply

Marsh Posté le 26-09-2005 à 00:00:07    

je viens d'essayer de récupérer à droite à gauche des infos sur fork. Puré, c'est pas évident ce truc !
 
Par contre, j'ai continué à essayer de faire marcher mon Async.pm et peut-être la remarque "la fonction doit être réentrante" pourrait permettre de faire avancer les choses.
En effet, je me suis rendu compte (du moins c'est l'impression que j'ai) que si je lance Async sur la même fonction avec des paramètres différents, c'est toujours le même résultat qui est renvoyé.
DOnc peut etre que mon problème ne se trouve pas au niveau de Async mais au niveau de la fonction. "qui doit etre ré-entrante". Et donc j'aurais aimé savoir ce que ça veut dire :))
 
 

Reply

Marsh Posté le 26-09-2005 à 00:23:02    

le_highlander a écrit :

je viens d'essayer de récupérer à droite à gauche des infos sur fork. Puré, c'est pas évident ce truc !


La concurrence n'est jamais aisée, et fork tu joues avec les processus, les threads ça semble plus simple à première vue, mais en réalité c'est encore plus difficile à gérer.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 26-09-2005 à 11:01:47    

pour tester des url nul besoin de fork.
Il faut plutot que tu tente des connections non bloquantes avec un select.
 
tu peux t'inspirer de ca:
http://forum.hardware.fr/hardwaref [...] -1.htm#bas
 
a par la partie qui extrait les URL des pages tout le reste est bon pour toi: tu lui fourni simpelment la liste des URL que tu veut tester à la place, et ca devrait rouler (en appelant check())
Si tu est sous linux tu peu meme augmenter el nombre de connections simultannées à genre 200 ou plus, sans probleme


Message édité par pospos le 26-09-2005 à 11:03:20
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed