>

1-4 개의 장치를 읽고 있는데 각 장치에 연결하고 스레드를 시작하여 데이터를 읽습니다. 스레드 unit1, unit2 등을 실행 한 다음 다시 시작하는 while 루프를 만들고 싶습니다. 나는 모두 5 초마다 모든 장치를 읽는 타이머를 설정해야합니다.

내 코드는 데이터를 읽고 보내는 데 효과적입니다. 단위를 영원히 읽을 수있는 while 루프를 만드는 방법을 이해하는 데 문제가 있습니다.

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)

X 초마다 각 스레드를 실행해야합니다. 반복 영원히 .. 예를 들어

스레드 1 스레드 2 .... 수면 x 초. 반복

  • 답변 # 1

    2 개의 개별 함수를 생성하고 스레딩 한 다음 Timer 를 사용하는 것이 좋습니다.  5 초 후에 호출하는 기능입니다.

    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)
    
    

  • 이전 javascript - typeerror - 정의되지 않은 '푸시'속성을 읽을 수 없습니다 데이터 배열에 주석을 넣을 수 없습니다
  • 다음 녹 재귀 문제