[python-brasil] como parar ou finalizar execucao de script python?

1,637 views
Skip to first unread message

Rodrigo Haas

unread,
Apr 30, 2010, 8:51:13 PM4/30/10
to python...@yahoogrupos.com.br
 


Pessoal,

Existe alguma forma de parar ou finalizar a execução de programa em
Python de fora dele? Explico:

"Infelizmente" estou sendo obrigado a usar Java para para fazer um
aplicativo. Em Java tenho uma Thread que executa um script em Python (
"python executa_script.py "). Tudo funciona perfeitamente até aí. O
problema é que preciso controlar a execução do script Python para que
ele soh seja executado quando eu preciso. Por isso preciso suspender ou
finalizar a execução dele, pois senão ficaria indefinidamente rodando no
sistema.

Existe alguma forma de fazer o que quero chamando um comando que
finalize o script?

Ex:

python executa_script.py -> inicia execução.

"stop" python executa_script.py -> finaliza execução. :-)

Se alguém puder ajudar...

Obrigado,

Rodrigo

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

Danilo Cabello

unread,
Apr 30, 2010, 9:39:31 PM4/30/10
to python...@yahoogrupos.com.br

2010/4/30 Rodrigo Haas <rodrigohaasbrasil@yahoo.com.br>:
> "Infelizmente" estou sendo obrigado a usar Java para para fazer um
> aplicativo. Em Java tenho uma Thread que executa um script em Python (
> "python  executa_script.py "). Tudo funciona perfeitamente até aí. O
> problema é que preciso controlar a execução do script Python para que
> ele soh seja executado quando eu preciso. Por isso preciso suspender ou
> finalizar a execução dele, pois senão ficaria indefinidamente rodando no
> sistema.
>
> Existe alguma forma de fazer o que quero chamando um comando que
> finalize o script?

É provável que a API Java consiga executar o script e retornar o id do
processo (PID) com o PID você deve ter recursos como
java.............(muitos pacotes, hehehe).kill(pid)

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

Rodrigo Haas

unread,
May 1, 2010, 2:55:48 AM5/1/10
to python...@yahoogrupos.com.br
 



Em 30-04-2010 22:39, Danilo Cabello escreveu:
>
> 2010/4/30 Rodrigo Haas <rodrigohaasbrasil@yahoo.com.br
> <mailto:rodrigohaasbrasil%40yahoo.com.br>>:


> > "Infelizmente" estou sendo obrigado a usar Java para para fazer um
> > aplicativo. Em Java tenho uma Thread que executa um script em Python (
> > "python executa_script.py "). Tudo funciona perfeitamente até aí. O
> > problema é que preciso controlar a execução do script Python para que
> > ele soh seja executado quando eu preciso. Por isso preciso suspender ou
> > finalizar a execução dele, pois senão ficaria indefinidamente rodando no
> > sistema.
> >
> > Existe alguma forma de fazer o que quero chamando um comando que
> > finalize o script?
>
> É provável que a API Java consiga executar o script e retornar o id do
> processo (PID) com o PID você deve ter recursos como
> java.............(muitos pacotes, hehehe).kill(pid)
>

Danilo,

Segui a sua "pista" e procurei como implementar a captura do PID em uma
variável...

Passei algumas horas procurando e lendo a complicação que é para fazer
isso em java...

Mas consegui de uma forma mais simples do que tentar obter a ID do
Processo para tentar matá-lo. Guardei a referência para o processo numa
variável e depois é só destruir o processo com o método ".destroy()".
Apesar de ser código Java vou deixar aqui, pois acho que outros
iniciantes poderão precisar no futuro algo igual ou parecido.

Como executar e parar um script Python em Java:

######################################
private Process processPython;
...

Runtime rt = Runtime.getRuntime();
processPython = rt.exec("python executa_script.py"); // Inicia execução

//Para parar a execucao do script Python / matar o processo:
processPython.destroy();

######################################

Espero que seja útil para outras pessoas...

Muito Obrigado por responder Danilo!

Um abraço,

Rodrigo Haas

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

Paulo Eduardo Neves

unread,
May 3, 2010, 1:30:30 PM5/3/10
to python...@yahoogrupos.com.br
 

Caro,
se você está rodando isto em alguma variante de Unix, o negócio já está
pronto para você. Existe o sinal STOP que suspende a execução de um
aplicativo e o sinal CONT que faz ele continuar do ponto que parou. Quem
dispara sinais é o comando mais mal nomeado de todos, o kill:

kill -STOP <pid> # pid é o process id de sua aplicação
kill -CONT <pid>

nunca tentei usar sinais em windows, não tenho idéia de como funcionará.



2010/4/30 Rodrigo Haas <rodrigohaasbrasil@yahoo.com.br>

>
> Pessoal,
>
> Existe alguma forma de parar ou finalizar a execução de programa em
> Python de fora dele? Explico:
>
> "Infelizmente" estou sendo obrigado a usar Java para para fazer um
> aplicativo. Em Java tenho uma Thread que executa um script em Python (
> "python executa_script.py "). Tudo funciona perfeitamente até aí. O
> problema é que preciso controlar a execução do script Python para que
> ele soh seja executado quando eu preciso. Por isso preciso suspender ou
> finalizar a execução dele, pois senão ficaria indefinidamente rodando no
> sistema.
>

--
Paulo Eduardo Neves
http://www.mosquito.pro.br



[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___

Rodrigo Haas

unread,
May 3, 2010, 1:59:52 PM5/3/10
to python...@yahoogrupos.com.br
 

Paulo,

Estou usando Ubuntu. Não conhecia os sinais STOP e CONT.

Muito obrigado por responder e pelo esclarecimento!

Rodrigo Haas



Em 03-05-2010 14:30, Paulo Eduardo Neves escreveu:
>
> Caro,
> se você está rodando isto em alguma variante de Unix, o negócio já está
> pronto para você. Existe o sinal STOP que suspende a execução de um
> aplicativo e o sinal CONT que faz ele continuar do ponto que parou. Quem
> dispara sinais é o comando mais mal nomeado de todos, o kill:
>
> kill -STOP <pid> # pid é o process id de sua aplicação
> kill -CONT <pid>
>
> nunca tentei usar sinais em windows, não tenho idéia de como funcionará.
>
> 2010/4/30 Rodrigo Haas <rodrigohaasbrasil@yahoo.com.br

> <mailto:rodrigohaasbrasil%40yahoo.com.br>>


>
> >
> > Pessoal,
> >
> > Existe alguma forma de parar ou finalizar a execução de programa em
> > Python de fora dele? Explico:
> >
> > "Infelizmente" estou sendo obrigado a usar Java para para fazer um
> > aplicativo. Em Java tenho uma Thread que executa um script em Python (
> > "python executa_script.py "). Tudo funciona perfeitamente até aí. O
> > problema é que preciso controlar a execução do script Python para que
> > ele soh seja executado quando eu preciso. Por isso preciso suspender ou
> > finalizar a execução dele, pois senão ficaria indefinidamente rodando no
> > sistema.
> >
>
> --
> Paulo Eduardo Neves


>
> [As partes desta mensagem que não continham texto foram removidas]
>
>

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
Atividade nos últimos dias:
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
.

__,_._,___
Reply all
Reply to author
Forward
0 new messages