0

我的问题有点令人困惑,所以我将通过确切地说我正在尝试做的事情来解释它。

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

这是我正在尝试做的伪代码:

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

longRunningJob() #stop blinking when job returns

有任何想法吗?

4

2 回答 2

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")
于 2015-03-19T03:40:09.887 回答
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
于 2015-03-19T03:26:03.077 回答