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
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)
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]
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]
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]