¿Cómo puedo ejecutar procesos en segundo plano con python 3.x?

Iniciado por Jedahee, 2 Noviembre 2019, 13:04 PM

0 Miembros y 1 Visitante están viendo este tema.

Jedahee

Buenas, quiero ejecutar procesos en segundo plano con el lenguaje de porgramación python 3.x
Ejemplo.:
Código (python) [Seleccionar]

import os
    hola = ["hola", "HOLA"]

    def repetir_hola():
        for palabra in hola:
            print(palabra)
            os.system("cls") #esto limpia tu pantalla

    def escribir():
        while True: #Esto hace que esto se ejecute de forma infinita
            archivo = open("archivo.txt", "w") #Esto abre una archivo txt en tu
                                               #directorio actual
            archivo.write("Estoy escribiendo en un archivo") #Esto escribe en tu archivo


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

engel lex

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 (python) [Seleccionar]
import threading
import time
def wait(secs):
  print("esperé: {} secgundos".format(secs))

threading.Thread(target=wait, args=(3,)).start()
threading.Thread(target=wait, args=(1,)).start()
threading.Thread(target=wait, args=(2,)).start()
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

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.

tincopasan

hola:
         todas las respuestas si bien son válidas, se recomienda usar multiproceso, algo así¨
Código (python) [Seleccionar]

#-*- coding: utf -8 -*-
from multiprocessing import process
#import os
hola = ["hola", "HOLA"]

def repetir_hola():
    for x in range(1001):
        print(x)
        #os.system("cls") #esto limpia tu pantalla

def escribir():
    while True: #Esto hace que esto se ejecute de forma infinita
        archivo = open("archivo.txt", "w") #Esto abre una archivo txt en tu
        for x in range(1001):                               #directorio actual
            archivo.write("Estoy escribiendo en un archivo") #Esto escribe en tu archivo

if  __name__=='__main__':
    repetir_hola()
    p = process(target = escribir())
    p.start()
    p.join()


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

Jedahee

Cita de: 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 (python) [Seleccionar]

#-*- coding: utf -8 -*-
from multiprocessing import process
#import os
hola = ["hola", "HOLA"]

def repetir_hola():
    for x in range(1001):
        print(x)
        #os.system("cls") #esto limpia tu pantalla

def escribir():
    while True: #Esto hace que esto se ejecute de forma infinita
        archivo = open("archivo.txt", "w") #Esto abre una archivo txt en tu
        for x in range(1001):                               #directorio actual
            archivo.write("Estoy escribiendo en un archivo") #Esto escribe en tu archivo

if  __name__=='__main__':
    repetir_hola()
    p = process(target = escribir())
    p.start()
    p.join()


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!

engel lex

Cita de: Jedahee en  4 Noviembre 2019, 18:10 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
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.