elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?  (Leído 5,858 veces)
Jedahee

Desconectado Desconectado

Mensajes: 19


Ver Perfil
¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
« en: 2 Noviembre 2019, 13:04 pm »

Buenas, quiero ejecutar procesos en segundo plano con el lenguaje de porgramación python 3.x
Ejemplo.:
Código
  1. import os
  2.    hola = ["hola", "HOLA"]
  3.  
  4.    def repetir_hola():
  5.        for palabra in hola:
  6.            print(palabra)
  7.            os.system("cls") #esto limpia tu pantalla
  8.  
  9.    def escribir():
  10.        while True: #Esto hace que esto se ejecute de forma infinita
  11.            archivo = open("archivo.txt", "w") #Esto abre una archivo txt en tu
  12.                                               #directorio actual
  13.            archivo.write("Estoy escribiendo en un archivo") #Esto escribe en tu archivo
  14.  

como podria ejecutar los dos bucles al mismo tiempo o ejecutar el bucle que imprime "hola" en pantalla mientras el otro se realiza


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
« Respuesta #1 en: 2 Noviembre 2019, 16:37 pm »

programacion multi hilo, libreria threading, pero recomiendo que primero te verses bien en programacion tanto funcional como orientada a objetos

en general una forma de aplicarla es
Código
  1. import threading
  2. import time
  3. def wait(secs):
  4.  print("esperé: {} secgundos".format(secs))
  5.  
  6. threading.Thread(target=wait, args=(3,)).start()
  7. threading.Thread(target=wait, args=(1,)).start()
  8. threading.Thread(target=wait, args=(2,)).start()
  9.  


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.397


Turn off the red ligth


Ver Perfil WWW
Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
« Respuesta #2 en: 2 Noviembre 2019, 16:58 pm »

Según para lo que sea también te puede interesar usar multiples estancias del intérprete.
Es decir corres 2 o más programas a la vez, cada uno en su interprete de python independiente.
Por ejemplo para crackear la contraseña un Zip, podrías tener un programa probando contraseñas desde la A hasta la M y otro programa desde la M hasta la Z.
Ambos funcionan a la vez independientes el uno del otro. Cuando uno averigua la contraseña, le dice al otro que se detenga o que haga lo que quieras.
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
« Respuesta #3 en: 2 Noviembre 2019, 18:52 pm »

hola:
         todas las respuestas si bien son válidas, se recomienda usar multiproceso, algo así¨
Código
  1. #-*- coding: utf -8 -*-
  2. from multiprocessing import process
  3. #import os
  4. hola = ["hola", "HOLA"]
  5.  
  6. def repetir_hola():
  7.    for x in range(1001):
  8.        print(x)
  9.        #os.system("cls") #esto limpia tu pantalla
  10.  
  11. def escribir():
  12.    while True: #Esto hace que esto se ejecute de forma infinita
  13.        archivo = open("archivo.txt", "w") #Esto abre una archivo txt en tu
  14.        for x in range(1001):                               #directorio actual
  15.            archivo.write("Estoy escribiendo en un archivo") #Esto escribe en tu archivo
  16.  
  17. if  __name__=='__main__':
  18.    repetir_hola()
  19.    p = process(target = escribir())
  20.    p.start()
  21.    p.join()
  22.  

cambié un poco el código para que se vea mejor como funciona.
Saludos.
En línea

Jedahee

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
« Respuesta #4 en: 4 Noviembre 2019, 18:10 pm »

hola:
         todas las respuestas si bien son válidas, se recomienda usar multiproceso, algo así¨
Código
  1. #-*- coding: utf -8 -*-
  2. from multiprocessing import process
  3. #import os
  4. hola = ["hola", "HOLA"]
  5.  
  6. def repetir_hola():
  7.    for x in range(1001):
  8.        print(x)
  9.        #os.system("cls") #esto limpia tu pantalla
  10.  
  11. def escribir():
  12.    while True: #Esto hace que esto se ejecute de forma infinita
  13.        archivo = open("archivo.txt", "w") #Esto abre una archivo txt en tu
  14.        for x in range(1001):                               #directorio actual
  15.            archivo.write("Estoy escribiendo en un archivo") #Esto escribe en tu archivo
  16.  
  17. if  __name__=='__main__':
  18.    repetir_hola()
  19.    p = process(target = escribir())
  20.    p.start()
  21.    p.join()
  22.  

cambié un poco el código para que se vea mejor como funciona.
Saludos.

No entiendo porque creas un bucle for de rango hastas 1001, que realiza esa parte del código
Muchas gracias por responder!
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
« Respuesta #5 en: 4 Noviembre 2019, 18:30 pm »

No entiendo porque creas un bucle for de rango hastas 1001, que realiza esa parte del código
Muchas gracias por responder!

simplemente escribe en un archivo 1000 veces "estoy escribiendo en un archivo"

ojo, a pesar que multiprocessing es usado comunmente (yo lo uso un montón) tienes que tener cuidado porque no es un hilo, sino es un proceso independiente, es decir, es como si ejecutaras otro proceso, no tiene acceso a las variables ni nada una vez ejecutado, tienes que usar modos diferentes de intercomunicacion (como queue o socket)... eso si, es muy util en muchas ocasiones, pero recomiendo estudiar bien el tema y como el sistema operativo maneja los hilos y procesos internamente
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] Procesos en segundo plano con Popen
Scripting
Khaleth 0 5,759 Último mensaje 9 Marzo 2010, 10:25 am
por Khaleth
como ejecutar procesos en segundo plano
Programación C/C++
hiisoka 4 4,794 Último mensaje 28 Noviembre 2014, 17:01 pm
por x64core
Ejecutar un proceso en segundo plano en python
Scripting
Sentex 7 5,683 Último mensaje 1 Abril 2018, 18:59 pm
por engel lex
[W10]Como puedo eliminar procesos en segundo plano?
Windows
huchoko 2 2,160 Último mensaje 20 Octubre 2018, 19:10 pm
por huchoko
MOVIDO: [W10]Como puedo eliminar procesos en segundo plano?
Dudas Generales
Songoku 0 1,940 Último mensaje 20 Octubre 2018, 18:24 pm
por Songoku
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines