我的问题有点令人困惑所以我会通过说出我想要做的事来解释它。
我刚拿到一个Raspberry Pi,正在用它编写一个Python项目。我有一个功能,可以无限地打开和关闭灯。我想使用闪烁的灯来显示工作状态(可能需要一段时间)。
这是我想要做的伪代码:
def blink():
while 1:
##light on##
time.sleep(.5)
##light off##
time.sleep(.5)
longRunningJob() #stop blinking when job returns
有什么想法吗?
答案 0 :(得分:1)
你可以使用一个类来传递一个停止变量并完成这样的线程:
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")
答案 1 :(得分: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