Foros del Web » Programando para Internet » Python »

Problema al usar envoy

Estas en el tema de Problema al usar envoy en el foro de Python en Foros del Web. Saludos! Cuando uso envoy de la siguiente manera en Windows 7: Código: import envoy r = envoy.run('sparzaplayer.exe','FreeCell.exe') Yo espero tener como resultado: que se ejecute ...
  #1 (permalink)  
Antiguo 18/06/2014, 07:31
Avatar de tupanka  
Fecha de Ingreso: marzo-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Exclamación Problema al usar envoy

Saludos!

Cuando uso envoy de la siguiente manera en Windows 7:
Código:
import envoy
r = envoy.run('sparzaplayer.exe','FreeCell.exe')
Yo espero tener como resultado: que se ejecute sparzaplayer.exe y FreeCell.exe al mismo tiempo. Sin embargo eso no sucede. Mas bien se ejecuta sparzaplayer.exe y el otro programa no funciona. ¿Será que se está ejecutando en segundo plano sin abrir su ventana correspondiente?


Ahora bien, cuando escribo el siguiente código
Código:
import envoy
r = envoy.run('FreeCell.exe','sparzaplayer.exe')
Resulta en que se ejecuta FreeCell.exe y el segundo programa no se ve por ningún lado.

He buscado en la documentación de envoy en Internet pero realmente no se dice mucho. Tal vez sea una tontería pero yo no logro ver cual es el problema

Agradecido de antemano por sus respuestas
  #2 (permalink)  
Antiguo 18/06/2014, 09:26
Avatar de tupanka  
Fecha de Ingreso: marzo-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Respuesta: Problema al usar envoy

Bueno trasteando en el codigo de envoy, me doy cuenta de que envoy.run no se puede usar para ejecutar dos programas externos al mismo tiempo por que el segundo parametro de la funcion consiste en los datos de entrada que pudiera tener el primer parametro que si es un programa o comando del sistema operativo. Por eso es que solo el primer programa era el que me funcionaba.

De manera que, para lograr lo que quería, use una combinación de envoy.run y threading, que se ve como sigue:

Código Python:
Ver original
  1. import envoy
  2. import threading
  3.  
  4. def worker(count):
  5.     print("Proceso numero: ",count)
  6.     if count==0:
  7.     r = envoy.run('FreeCell.exe')
  8.     if count==1:
  9.     r = envoy.run('SparzaPlayer.exe')
  10.     return
  11.  
  12. threads = list()
  13.  
  14. for i in [0,1]:
  15.     t = threading.Thread(target=worker, args=(i,))
  16.     threads.append(t)
  17.     t.start()
  18.  
  19. print("out")

De ese modo si logro los resultados que esperaba.
  #3 (permalink)  
Antiguo 18/06/2014, 09:36
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Problema al usar envoy

La función run, solo corre un comando. Tienes que abrir un nuevo hilo para que puedas correr los comandos en paralelo, como ya te has puesto algo de código. Lo que haces actualmente es pasarle "SparzaPlayer.exe" como parámetro.

Se me hace un poco inutil usar un for para crear dos threads. Ya que siempre sera el mismo número. Y más la función worker. Por ultimo sería mejor usar [] en lugar de list()

Saludos
__________________
Grupo Telegram Docker en Español
  #4 (permalink)  
Antiguo 18/06/2014, 09:46
Avatar de tupanka  
Fecha de Ingreso: marzo-2008
Mensajes: 62
Antigüedad: 16 años
Puntos: 1
Respuesta: Problema al usar envoy

Gracias, por la observación. Es solo que copie un código para usar hilos, y quería estar seguro de que todo funcionara bien. Por eso no cambie casi nada del código prestado

Saludos!
  #5 (permalink)  
Antiguo 18/06/2014, 09:49
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: Problema al usar envoy

Pues habría que cambiar esa costumbre de copiar y pegar sin revisar.

Saludos
__________________
Grupo Telegram Docker en Español

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.