Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Jedahee en 2 Noviembre 2019, 13:04 pm



Título: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
Publicado por: Jedahee 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


Título: Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
Publicado por: engel lex 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.  


Título: Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
Publicado por: @XSStringManolo 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.


Título: Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
Publicado por: tincopasan 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.


Título: Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
Publicado por: Jedahee 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!


Título: Re: ¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?
Publicado por: engel lex 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