Voici mon probl=E8me :
- Je souhaite interfacer Perl (5.8.6) avec Php (5.0.4).
- Je dois ex=E9cuter 1000 fois la ligne de commande "php script.php"
- Le temps d'ex=E9cution du script PHP est variable d'un appel =E0
l'autre.
- Je veux lancer 5 scripts PHP simultan=E9ment. D=E8s que l'un des 5 se
termine, un nouveau est lanc=E9.
Auriez-vous un bout de code sous la main qui permette de faire cel=E0 en
Perl ?
Merci d'avance pour vos r=E9ponses, car l=E0 je suis un peu perdu
Sinon, avec des fork, c'est pas possible ?? Je dis ça moi, mais...
A condition que l'OS le supporte.
Paul Gaborit
À (at) 25 May 2005 01:36:25 -0700, "Arthur" écrivait (wrote):
Voici mon problème : - Je souhaite interfacer Perl (5.8.6) avec Php (5.0.4). - Je dois exécuter 1000 fois la ligne de commande "php script.php" - Le temps d'exécution du script PHP est variable d'un appel à l'autre. - Je veux lancer 5 scripts PHP simultanément. Dès que l'un des 5 se termine, un nouveau est lancé.
Auriez-vous un bout de code sous la main qui permette de faire celà en Perl ?
En tous la réponse n'est pas dans le titre : ce n'est pas un cas d'utilisation de multi-threading !
Une solution serait d'utiliser la module Parallel::Jobs (qui est disponible sur CPAN).
J'ai bien un exemple de code mais il me faudrait le simplifier car, s'il fait bien ce que vous souhaitez, il le fait en distributant les tâches sur plusieurs machines et en traitant tous les cas de plantage avec reprise du calcul erroné. Si vous n'y arrivez vraiment pas autrement, je prendrai peut-être le temps de vous le simplifier.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 25 May 2005 01:36:25 -0700,
"Arthur" <pmlo@yahoo.com> écrivait (wrote):
Voici mon problème :
- Je souhaite interfacer Perl (5.8.6) avec Php (5.0.4).
- Je dois exécuter 1000 fois la ligne de commande "php script.php"
- Le temps d'exécution du script PHP est variable d'un appel à
l'autre.
- Je veux lancer 5 scripts PHP simultanément. Dès que l'un des 5 se
termine, un nouveau est lancé.
Auriez-vous un bout de code sous la main qui permette de faire celà en
Perl ?
En tous la réponse n'est pas dans le titre : ce n'est pas un cas d'utilisation
de multi-threading !
Une solution serait d'utiliser la module Parallel::Jobs (qui est disponible
sur CPAN).
J'ai bien un exemple de code mais il me faudrait le simplifier car, s'il fait
bien ce que vous souhaitez, il le fait en distributant les tâches sur
plusieurs machines et en traitant tous les cas de plantage avec reprise du
calcul erroné. Si vous n'y arrivez vraiment pas autrement, je prendrai
peut-être le temps de vous le simplifier.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 25 May 2005 01:36:25 -0700, "Arthur" écrivait (wrote):
Voici mon problème : - Je souhaite interfacer Perl (5.8.6) avec Php (5.0.4). - Je dois exécuter 1000 fois la ligne de commande "php script.php" - Le temps d'exécution du script PHP est variable d'un appel à l'autre. - Je veux lancer 5 scripts PHP simultanément. Dès que l'un des 5 se termine, un nouveau est lancé.
Auriez-vous un bout de code sous la main qui permette de faire celà en Perl ?
En tous la réponse n'est pas dans le titre : ce n'est pas un cas d'utilisation de multi-threading !
Une solution serait d'utiliser la module Parallel::Jobs (qui est disponible sur CPAN).
J'ai bien un exemple de code mais il me faudrait le simplifier car, s'il fait bien ce que vous souhaitez, il le fait en distributant les tâches sur plusieurs machines et en traitant tous les cas de plantage avec reprise du calcul erroné. Si vous n'y arrivez vraiment pas autrement, je prendrai peut-être le temps de vous le simplifier.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Paul Gaborit
À (at) Wed, 25 May 2005 12:14:57 +0200, JacK écrivait (wrote):
Le 25/05/2005 11:05, :
Sinon, avec des fork, c'est pas possible ?? Je dis ça moi, mais...
A condition que l'OS le supporte.
La fonction 'fork' de Perl fonctionne bien évidemment sur tous les OS qui implémentent 'fork'. Sur d'autres OS (comme Windows par exemple), le 'fork' est (correctement) émulé via des appels spécifiques.
Il reste quelques OS (Mac OS, AmigaOS, RISC OS, VOS, VM/ESA) où 'fork' n'existe pas (ni en vrai ni émulé) mais ils sont quand même en voie d'extinction... ;-)
Pour 'exec', la situation est quasi similaire.
Pour en savoir plus, il faut lire perlport (en anglais pour perl 5.8.5): <http://perl.enstimac.fr/perl5.8.5/5.8.5/pod/perlport.html>
PS: Attention, la traduction française de perlport accessible via l'URL ci-dessous n'est vraiment pas à jour en particulier sur 'fork' : il faut dire que cette traduction date de la version 5.005_02 de perl :-(
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Wed, 25 May 2005 12:14:57 +0200,
JacK <jack.sardin@rd.francetelecom.com> écrivait (wrote):
Le 25/05/2005 11:05, :
Sinon, avec des fork, c'est pas possible ??
Je dis ça moi, mais...
A condition que l'OS le supporte.
La fonction 'fork' de Perl fonctionne bien évidemment sur tous les OS qui
implémentent 'fork'. Sur d'autres OS (comme Windows par exemple), le 'fork' est
(correctement) émulé via des appels spécifiques.
Il reste quelques OS (Mac OS, AmigaOS, RISC OS, VOS, VM/ESA) où 'fork'
n'existe pas (ni en vrai ni émulé) mais ils sont quand même en voie
d'extinction... ;-)
Pour 'exec', la situation est quasi similaire.
Pour en savoir plus, il faut lire perlport (en anglais pour perl 5.8.5):
<http://perl.enstimac.fr/perl5.8.5/5.8.5/pod/perlport.html>
PS: Attention, la traduction française de perlport accessible via l'URL
ci-dessous n'est vraiment pas à jour en particulier sur 'fork' : il faut dire
que cette traduction date de la version 5.005_02 de perl :-(
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Wed, 25 May 2005 12:14:57 +0200, JacK écrivait (wrote):
Le 25/05/2005 11:05, :
Sinon, avec des fork, c'est pas possible ?? Je dis ça moi, mais...
A condition que l'OS le supporte.
La fonction 'fork' de Perl fonctionne bien évidemment sur tous les OS qui implémentent 'fork'. Sur d'autres OS (comme Windows par exemple), le 'fork' est (correctement) émulé via des appels spécifiques.
Il reste quelques OS (Mac OS, AmigaOS, RISC OS, VOS, VM/ESA) où 'fork' n'existe pas (ni en vrai ni émulé) mais ils sont quand même en voie d'extinction... ;-)
Pour 'exec', la situation est quasi similaire.
Pour en savoir plus, il faut lire perlport (en anglais pour perl 5.8.5): <http://perl.enstimac.fr/perl5.8.5/5.8.5/pod/perlport.html>
PS: Attention, la traduction française de perlport accessible via l'URL ci-dessous n'est vraiment pas à jour en particulier sur 'fork' : il faut dire que cette traduction date de la version 5.005_02 de perl :-(
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Arthur
Une solution serait d'utiliser la module Parallel::Jobs (qui est disponib le sur CPAN).
Oui, ça semble être exactement ce que je cherche
J'ai bien un exemple de code mais il me faudrait le simplifier car, s'il fait bien ce que vous souhaitez, il le fait en distributant les tâches sur plusieurs machines et en traitant tous les cas de plantage avec reprise du calcul erroné. Si vous n'y arrivez vraiment pas autrement, je prendrai peut-être le temps de vous le simplifier.
Ca m'intéresse grandement. Si vous n'avez pas le temps de simplifier, vous n'êtes pas obligé, je réussiras bien à isoler le code qui m'intéresse ;)
Merci d'avance
Une solution serait d'utiliser la module Parallel::Jobs (qui est disponib le
sur CPAN).
Oui, ça semble être exactement ce que je cherche
J'ai bien un exemple de code mais il me faudrait le simplifier car, s'il fait
bien ce que vous souhaitez, il le fait en distributant les tâches sur
plusieurs machines et en traitant tous les cas de plantage avec reprise du
calcul erroné. Si vous n'y arrivez vraiment pas autrement, je prendrai
peut-être le temps de vous le simplifier.
Ca m'intéresse grandement.
Si vous n'avez pas le temps de simplifier, vous n'êtes pas obligé, je
réussiras bien à isoler le code qui m'intéresse ;)
Une solution serait d'utiliser la module Parallel::Jobs (qui est disponib le sur CPAN).
Oui, ça semble être exactement ce que je cherche
J'ai bien un exemple de code mais il me faudrait le simplifier car, s'il fait bien ce que vous souhaitez, il le fait en distributant les tâches sur plusieurs machines et en traitant tous les cas de plantage avec reprise du calcul erroné. Si vous n'y arrivez vraiment pas autrement, je prendrai peut-être le temps de vous le simplifier.
Ca m'intéresse grandement. Si vous n'avez pas le temps de simplifier, vous n'êtes pas obligé, je réussiras bien à isoler le code qui m'intéresse ;)
Merci d'avance
Arthur
Il semblerait que Parallel::ForkManager soit mieux adapté pour ce type de tâche. Voyez vous des inconvénients dans l'utilisation de cette bibliothèque (ressource CPU, instabilité ou autres) ?
Il semblerait que Parallel::ForkManager soit mieux adapté pour ce type
de tâche.
Voyez vous des inconvénients dans l'utilisation de cette bibliothèque
(ressource CPU, instabilité ou autres) ?
Il semblerait que Parallel::ForkManager soit mieux adapté pour ce type de tâche. Voyez vous des inconvénients dans l'utilisation de cette bibliothèque (ressource CPU, instabilité ou autres) ?
Paul Gaborit
À (at) 26 May 2005 01:37:47 -0700, "Arthur" écrivait (wrote):
Il semblerait que Parallel::ForkManager soit mieux adapté pour ce type de tâche.
Exact (je l'avais oublié celui-là). Il est plus simple à mettre en oeuvre que Parallel::Jobs. Il ne permet pas au processus père de récupérer les sorties (STDOUT et STDERR) de ses fils... mais dans le cas présent, ça ne semble pas nécessaire.
Voyez vous des inconvénients dans l'utilisation de cette bibliothèque (ressource CPU, instabilité ou autres) ?
A priori, pas plus d'inconvénients (sauf bug mais le code est quand même très simple et semble tout à fait correct) que si on utilise Parallel::Jobs.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) 26 May 2005 01:37:47 -0700,
"Arthur" <pmlo@yahoo.com> écrivait (wrote):
Il semblerait que Parallel::ForkManager soit mieux adapté pour ce type
de tâche.
Exact (je l'avais oublié celui-là). Il est plus simple à mettre en oeuvre que
Parallel::Jobs. Il ne permet pas au processus père de récupérer les sorties
(STDOUT et STDERR) de ses fils... mais dans le cas présent, ça ne semble pas
nécessaire.
Voyez vous des inconvénients dans l'utilisation de cette bibliothèque
(ressource CPU, instabilité ou autres) ?
A priori, pas plus d'inconvénients (sauf bug mais le code est quand même très
simple et semble tout à fait correct) que si on utilise Parallel::Jobs.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) 26 May 2005 01:37:47 -0700, "Arthur" écrivait (wrote):
Il semblerait que Parallel::ForkManager soit mieux adapté pour ce type de tâche.
Exact (je l'avais oublié celui-là). Il est plus simple à mettre en oeuvre que Parallel::Jobs. Il ne permet pas au processus père de récupérer les sorties (STDOUT et STDERR) de ses fils... mais dans le cas présent, ça ne semble pas nécessaire.
Voyez vous des inconvénients dans l'utilisation de cette bibliothèque (ressource CPU, instabilité ou autres) ?
A priori, pas plus d'inconvénients (sauf bug mais le code est quand même très simple et semble tout à fait correct) que si on utilise Parallel::Jobs.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Voici mon problème : - Je souhaite interfacer Perl (5.8.6) avec Php (5.0.4). - Je dois exécuter 1000 fois la ligne de commande "php script.php" - Le temps d'exécution du script PHP est variable d'un appel à l'autre. - Je veux lancer 5 scripts PHP simultanément. Dès que l'un des 5 se termine, un nouveau est lancé.
Auriez-vous un bout de code sous la main qui permette de faire celà en Perl ?
Merci d'avance pour vos réponses, car là je suis un peu perdu
Merlyn, aka randal schwartz a ecris un article pour faire exactement cela avec des fork. http://www.stonehenge.com/merlyn/UnixReview/col41.html
-- dominix
Bonjour,
Voici mon problème :
- Je souhaite interfacer Perl (5.8.6) avec Php (5.0.4).
- Je dois exécuter 1000 fois la ligne de commande "php script.php"
- Le temps d'exécution du script PHP est variable d'un appel à
l'autre.
- Je veux lancer 5 scripts PHP simultanément. Dès que l'un des 5 se
termine, un nouveau est lancé.
Auriez-vous un bout de code sous la main qui permette de faire celà en
Perl ?
Merci d'avance pour vos réponses, car là je suis un peu perdu
Merlyn, aka randal schwartz a ecris un article pour faire
exactement cela avec des fork.
http://www.stonehenge.com/merlyn/UnixReview/col41.html
Voici mon problème : - Je souhaite interfacer Perl (5.8.6) avec Php (5.0.4). - Je dois exécuter 1000 fois la ligne de commande "php script.php" - Le temps d'exécution du script PHP est variable d'un appel à l'autre. - Je veux lancer 5 scripts PHP simultanément. Dès que l'un des 5 se termine, un nouveau est lancé.
Auriez-vous un bout de code sous la main qui permette de faire celà en Perl ?
Merci d'avance pour vos réponses, car là je suis un peu perdu
Merlyn, aka randal schwartz a ecris un article pour faire exactement cela avec des fork. http://www.stonehenge.com/merlyn/UnixReview/col41.html