2015-03-19 38 views
0

我的問題有點混亂,所以我將通過說明我正在嘗試做什麼來解釋它。函數返回結束循環函數 - Python

我剛拿到一個Raspberry Pi,並且正在用它編寫一個Python項目。我有一個功能可以無限地開啓和關閉燈光。我想使用閃爍的燈光顯示工作狀態(可能需要一段時間)。

這裏是什麼,我試圖做的僞代碼:

def blink(): 
    while 1: 
     ##light on## 
     time.sleep(.5) 
     ##light off## 
     time.sleep(.5) 

longRunningJob() #stop blinking when job returns 

任何想法?

+1

,那會是什麼看成。 – jedwards 2015-03-19 02:55:32

回答

0

下面是解

import threading 
import time 

RUNNING = False 

def blink(): 
    while RUNNING: 
     ##light on## 
     time.sleep(.5) 
     ##light off## 
     time.sleep(.5) 

t = threading.Thread(target=blink) 
RUNNING = True 
t.start() 
longRunningJob() #stop blinking when job returns 
RUNNING = False 
1

你可以使用一個類來傳遞停止變量,完成線程是這樣的:如果RPI支持多線程

import time 
from threading import Thread 


class Blink(Thread): 
    def __init__(self,starting_variable): 
     Thread.__init__(self) 
     print("starting variable: %s"%(starting_variable)) 
     self.stop=False 

    def Stop(self): 
     self.stop = True 

    def blink(self): 
     print("light on") 
     ##light on## 
     time.sleep(.5) 
     print("light off") 
     ##light off## 
     time.sleep(.5) 

    def run(self): 
     while not self.stop: 
      self.blink() 
     print("exiting loop ...") 


def longRunningJob(): 
    for sleep_delay in range(5): 
     print("in longRunningJob with sleep: %s"%(sleep_delay)) 
     time.sleep(sleep_delay) 


blink=Blink("something") 
blink.start() 

longRunningJob() 

blink.Stop() 
print("END")