¿Cómo puedo iterar entre X número de hilos sin fin

Pregunta hecha: hace 8 meses Ultima actividad: hace 8 meses
up 0 down

Estoy leyendo desde 1 hasta 4 dispositivos y me conecto a cada dispositivo y empezar un hilo para leer los datos. Quiero crear un bucle while que se ejecuta unidad1 hilo, unit2 etc, entonces comienza de nuevo. por lo que todo lo que necesito para configurar un temporizador para leer todos los dispositivos por ejemplo cada 5 segundos.

Mi código funciona para leer y enviar los datos que estoy teniendo un problema entender cómo puedo crear un bucle while para leer las unidades para siempre.

thread_list = []
ports = ['/dev/ttyXRUSB0']
for item in ports:
  #setup conection  
  client = EPsolarTracerClient(method = 'rtu', port = item, baudrate = 115200, timeout = 0.2 )
  #client = ModbusClient(method = 'rtu', port = item, baudrate = 115200, timeout = 0.2 )
  client.connect()
  #read config from device
  epstime = client.read_rtc()
  sync_date = datetime.datetime.now()

  #write config to device
  client.write_rtc(sync_date)

  #create and start thread for device
  thread = threading.Thread(target=readunit,args=(client,))
  thread_list.append(thread)
  thread.start()
  # below is just leftover from old code but it is where i want to start the loop 
while client.connect:
  # readunit(client) # old code

   sleepTime = 5

   sleep(sleepTime)

Necesito funcionar cada hilo cada X segundos. y repetir Siempre.. Por ejemplo

Thread1 thread2 .... sueño x segundos. repetir

1 respuesta

up 0 down

Yo recomendaría la creación de 2 funciones separadas y con hilo, y luego usar Timer funcionar a llamarlos después de 5 segundos, así,

from threading import *
import time

def function1():
    while(True):
        print "1"
        time.sleep(5) # wait 5 seconds      

def function2():
    while(True):
        print "2"
        time.sleep(5) # wait 5 seconds

# create threads
t = Timer(5.0, function1) # start the thread after 5 seconds
t2 = Timer(5.0, function2)