函数返回结束循环函数 - Python

时间:2015-03-19 02:53:30

标签: python raspberry-pi raspberry-pi2

我的问题有点令人困惑所以我会通过说出我想要做的事来解释它。

我刚拿到一个Raspberry Pi,正在用它编写一个Python项目。我有一个功能,可以无限地打开和关闭灯。我想使用闪烁的灯来显示工作状态(可能需要一段时间)。

这是我想要做的伪代码:

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

longRunningJob() #stop blinking when job returns

有什么想法吗?

2 个答案:

答案 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