난 그냥 파이썬에 대해 배우기 시작하고 LED를 깜박이는 프로젝트에 문제가있다. 새 메시지를 받고 새 스레드를 시작할 때. 이전 스레드가 계속 실행 중입니다. 오래된 스레드를 죽이고 새 스레드를 시작하고 싶습니다. 내 문제를 해결하는 방법? (나는 영어 잘 모르겠지만 내가 노력하고 있다면 죄송합니다) 는오래된 스레드를 죽이고 새로운 스레드를 시작하는 방법?
def led_action(topic,message):
print topic+" "+message
if message == 'OFF':
#state = False
print ("Stoping...")
while message == 'OFF':
GPIO.output(8,GPIO.LOW)
elif message == 'ON':
#state = True
print ("Opening...")
while message == 'ON':
GPIO.output(8,GPIO.HIGH) #Set LED pin 8 to HIGH
time.sleep(1) #Delay 1 second
GPIO.output(8,GPIO.LOW) #Set LED pin 8 to LOW
time.sleep(1)
# Get message form NETPIE and Do something
def subscription(topic,message):
set = thread.start_new_thread(led_action, (topic,message))
def connection():
print "Now I am connected with netpie"
def disconnect():
print "disconnect is work"
microgear.setalias("test")
microgear.on_connect = connection
microgear.on_message = subscription
microgear.on_disconnect = disconnect
microgear.subscribe("/mails")
microgear.connect(True)
만약'message'가''ON '' 또는''OFF''이라면 당신의 스레드 함수는 무한 루프에 빠지게됩니다. 함수가 돌아 오면 실행중인 스레드가 종료됩니다. 종료 할 시간 내에 코드를 알리는 방법을 제공하지 않으면 실행중인 스레드를 중지 할 수있는 방법이 없습니다. 예를 들어,이 [이 답변] (http://stackoverflow.com/a/15734837/355230). 귀하의 답변에 대해 – martineau