Los Hilos son procesos en paralelo que se ejecutan al mismo tiempo que el programa principal Se usa la librería threading El hilo se debe iniciar [hilo.start()] Debe existir una función que realice la tarea del hilo

  1. Este programa crea un hilo donde se realiza un contador cada 1 segundo. A la par el programa pregunta una entrada si es “A” imprime el contador, si es “Z” termina el programa y el Hilo, y si es alguna otra cosa, lo imprime
import threading as th
import time

def paralelo():
    global contador
    global cont2
    cont2 = True
    contador = 0
    while cont2:
        time.sleep(1)
        contador+=1
        
    print("Fin del Hilo")

print("Inicio programa Principal")
hilo = th.Thread(target=paralelo)
hilo.start()

global cont1
cont1 = True
global cont2a
while cont1:
    dato = input("Digita algo 'A' para ver conteo 'Z' para finalizar: ")
    if dato=="A":
        print(contador)
    elif dato=="Z":
        cont1=False
        cont2=False
    else:
        print(dato)

print("Se terminó del programa principal")

2. Creación de dos hilos infinitos, el primero, envía un A1 cada 1 segundo y el segundo hilo envía un B0.5 cada medio segundo.

import threading as th
import time

def paralelo():
    while True:
        time.sleep(1)
        print(f"A1")

def paralelo2():
    while True:
        time.sleep(0.5)
        print(f"\t\tB0.5") 

hilo = th.Thread(target=paralelo)
hilo.start()

hilo2 = th.Thread(target=paralelo2)
hilo2.start()

image.png

Hilos y Tkinter

En este ejemplo, se usa un Slider y un Hilo para contar cada segundo y mostrar cada segundo

import tkinter as tk
import time
import threading as th

#Funciones a utilizar
def cambio(variable):
    etiqueta.set(variable)
    time.sleep(0.1)

def contadorcito():
    global cont
    cont=0
    while True:
        cont+=1
        etiqueta2.set(cont)
        time.sleep(1)

w = tk.Tk()
w.geometry("400x300")
etiqueta = tk.StringVar()
etiqueta.set(0)

etiqueta2 = tk.StringVar()
etiqueta2.set(0)

#Definicion del hilo1
hilo = th.Thread(target=contadorcito)
hilo.start()

fm = tk.Frame(w)
fm.place(relx=0.22,rely=0.05)

sl=tk.Scale(fm,from_=0,to=20,orient="horizontal",length=200,command=cambio)
sl.grid(row=0,column=1,padx=10,pady=10)

lasiu = tk.Label(fm,textvariable=etiqueta)
lasiu.grid(row=1,column=1,padx=10,pady=10)

lasiu2 = tk.Label(fm,textvariable=etiqueta2)
lasiu2.grid(row=2,column=1,padx=10,pady=10)

variable = sl.get()

w.mainloop()

image.png