Buenas, quiero ejecutar procesos en segundo plano con el lenguaje de porgramación python 3.x
Ejemplo.:
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
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
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()
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.
hola:
todas las respuestas si bien son válidas, se recomienda usar multiproceso, algo así¨
#-*- 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.
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í¨
#-*- 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!
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