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 に答える