Capitão Mostarda,<div><br></div><div>Sugiro você olhar o módulo Proc::Fork</div><div><a href="http://search.cpan.org/perldoc?Proc::Fork">http://search.cpan.org/perldoc?Proc::Fork</a></div><div><br></div><div>Pode te dar algumas idéias.</div>
<div>[]s,</div><div>Russo<br><br><div class="gmail_quote">2011/1/20 João André Simioni <span dir="ltr"><<a href="mailto:jasimioni@gmail.com">jasimioni@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Blabos,<br>
<br>
Ele está chamando o <a href="http://script.pl" target="_blank">script.pl</a> com & comercial no final - assim a Shell<br>
imediatamente coloca o processo em background e o system retorna<br>
imediatamente. Ele consegue os múltiplos processos paralelos.<br>
<br>
Mas para o sistema operacional, é como se tivesse executado cada um<br>
deles separadamente e por isso a quantidade de memória excessiva (não<br>
compartilham nenhuma matriz de dados, nem nada assim).<br>
<br>
[]'s<br>
<br>
Joao Andre<br>
<br>
<br>
<br>
2011/1/20 Blabos de Blebe <<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>>:<br>
<div><div></div><div class="h5">> Puta merda!<br>
><br>
> Não é que se a gente não tomar cuidado bizonhice pega!<br>
><br>
> Aff...<br>
><br>
> 2011/1/20 Alexei Znamensky <<a href="mailto:russoz@gmail.com">russoz@gmail.com</a>>:<br>
>> Blabos<br>
>><br>
>> 2011/1/20 Blabos de Blebe <<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>><br>
>>><br>
>>> Não foi o que você perguntou, mas considere:<br>
>>><br>
>>> <a href="http://foo.pl" target="_blank">foo.pl</a>:<br>
>>> #!/usr/bin/perl<br>
>>><br>
>>> print $ARGV[0], $/;<br>
>>> `sleep 5`;<br>
>><br>
>> aspas invertidas?? WTF?<br>
>> perldoc -f sleep<br>
>><br>
>>><br>
>>> ___<br>
>>><br>
>>> perl -E 'while($i++ < 10){system("./<a href="http://foo.pl" target="_blank">foo.pl</a>", $i)}'<br>
>>><br>
>>> perldoc -f system:<br>
>>> Does exactly the same thing as exec LIST , except that a fork is done<br>
>>> first, and the parent process waits for the child process to exit.<br>
>>><br>
>>><br>
>>> Então não tem chamada parelela nenhuma acontecendo.<br>
>>><br>
>>> Abraços<br>
>>><br>
>>> 2011/1/20 Lindolfo Lorn Rodrigues <<a href="http://lorn.br" target="_blank">lorn.br</a>@<a href="http://gmail.com" target="_blank">gmail.com</a>>:<br>
>>> > Cara, usar system não é uma boa pratica para cada chamada no system ele<br>
>>> > vai<br>
>>> > carregar um bash para tratar o STDOUT que você manda para o /dev/null,<br>
>>> > eu<br>
>>> > recomendo você dar uma olhada no POE, ele é um sistema de 'threads' e<br>
>>> > você<br>
>>> > pode construir seu system dentro dele, e ele seria o seu "script chefe"<br>
>>> > porque ele foi feito para isso.<br>
>>> > E ele tem um cookbook <a href="http://poe.perl.org/?POE_Cookbook" target="_blank">http://poe.perl.org/?POE_Cookbook</a> quando eu usei<br>
>>> > ele,<br>
>>> > eu peguei um cookbook ( receita de bolo ) que mais se parecia com o meu<br>
>>> > problema e mudei um pouco com o meu programa e etc. No seu caso parece<br>
>>> > que<br>
>>> > você que gerenciar<br>
>>> > processos <a href="http://poe.perl.org/?POE_Cookbook/Child_Component" target="_blank">http://poe.perl.org/?POE_Cookbook/Child_Component</a>.<br>
>>> > Minha principal dica é, não use system faça seus programas Perl<br>
>>> > conversarem<br>
>>> > com eles mesmo usando IPC, TCP sei lá, o POE resolve tudo isso para você<br>
>>> > caso tenha alguma duvida pergunte ai, flw.<br>
>>> > 2011/1/20 Tom Mostard <<a href="mailto:capmostarda@gmail.com">capmostarda@gmail.com</a>><br>
>>> >><br>
>>> >> Olá, pessoal!<br>
>>> >><br>
>>> >> Estou tendo um problema de memória com scripts em Perl.<br>
>>> >> Alguém aí teve algum problema parecido?<br>
>>> >><br>
>>> >> Tenho um "pequeno" sistema que precisa executar vários scripts Perl em<br>
>>> >> paralelo.<br>
>>> >> Então existe um script Perl "chefe" que fica responsável por executar<br>
>>> >> eles<br>
>>> >> com parâmetros diferentes usando system().<br>
>>> >><br>
>>> >> O sistema acessa vários bancos de dados e a depender do banco, da<br>
>>> >> tabela e<br>
>>> >> do campo ele executa um módulo específico.<br>
>>> >> Uso o MySQL em outra máquina para não abusar da memória.<br>
>>> >><br>
>>> >> Script-chefe:<br>
>>> >><br>
>>> >> while ( my $i < $execucoes ) # são execuções limitadas, mas por<br>
>>> >> enquanto<br>
>>> >> são 60<br>
>>> >> {<br>
>>> >> system( './<a href="http://script.pl" target="_blank">script.pl</a> $parametro1 > /dev/null & ' );<br>
>>> >> }<br>
>>> >><br>
>>> >> Dentro do script é carregado um módulo usando require assim:<br>
>>> >><br>
>>> >> require $ARGV[ 0 ].".pm";<br>
>>> >><br>
>>> >> Funciona tudo certo, se rodo 20, funciona tudo normal e eles ocupam 158<br>
>>> >> MB<br>
>>> >> de memória.<br>
>>> >> Se rodo 40, eles ocupam 316 MB de memória além da memória usada pelo<br>
>>> >> sistema.<br>
>>> >> Me parece que cada script carregado usa 8 MB em média. (Isso é<br>
>>> >> possível/normal?)<br>
>>> >> Quando uso 60, nem todos os scripts são executados.<br>
>>> >> Existe alguma maneira de executar um script otimizando o uso de memória<br>
>>> >> ou<br>
>>> >> vou ter que reavaliar o código?<br>
>>> >> Já revisei o código e eliminei arrays, variáveis de conexões com bancos<br>
>>> >> desnecessárias.<br>
>>> >> Existe algo mais que eu possa fazer?<br>
>>> >><br>
>>> >> Abraços,<br>
>>> >><br>
>>> >> Tom<br>
>>> >><br>
>>> >> _______________________________________________<br>
>>> >> Cascavel-pm mailing list<br>
>>> >> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
>>> >> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
>>> ><br>
>>> ><br>
>>> ><br>
>>> > --<br>
>>> > lorn at lornlab dot org<br>
>>> > Lindolfo "Lorn" Rodrigues<br>
>>> ><br>
>>> ><br>
>>> > _______________________________________________<br>
>>> > Cascavel-pm mailing list<br>
>>> > <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
>>> > <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
>>> ><br>
>>> _______________________________________________<br>
>>> Cascavel-pm mailing list<br>
>>> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
>>> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
>><br>
>><br>
>><br>
>> --<br>
>> Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com" target="_blank">russoz.wordpress.com</a>]<br>
>> [<a href="http://www.flickr.com/photos/alexeiz" target="_blank">www.flickr.com/photos/alexeiz</a>]<br>
>> «Only love / Can bring the rain / That makes you yearn to the sky»<br>
>><br>
>> _______________________________________________<br>
>> Cascavel-pm mailing list<br>
>> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
>> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
>><br>
> _______________________________________________<br>
> Cascavel-pm mailing list<br>
> <a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
> <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
><br>
_______________________________________________<br>
Cascavel-pm mailing list<br>
<a href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><font face="georgia, serif">Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com" target="_blank">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz" target="_blank">www.flickr.com/photos/alexeiz</a>]<br>
<span style="border-collapse:collapse"><div>«Only love / Can bring the rain / That makes you yearn to the sky»</div></span></font><br>
</div>