私はPythonプログラミングと同時実行性を初めて使い始めるのに十分新しいので、何かを許してください。Python:2つのスレッドが完了するまで関数の実行を停止する方法
私のプログラムは2つのスレッドを起動し、それぞれ関数 "lightshow()"を呼び出すが、プログラムが両方のスレッドが完了するまで実行を停止するのではなく、コードの次の行に移動する。
両方のスレッドが完了するまでプログラムを「一時停止」することはできますか?
import time
import threading
from threading import Thread
# Handshake pulse on GPIO2 of 4 50ms highs
def setup():
for pulse in range(5):
hs.on()
sleep(0.05)
hs.off()
sleep(0.05)
print('handshake comlete')
def lightshow(sequence, relay):
t_end = time.time() + 60*1
while time.time() < t_end:
print('starting timer')
# iterate over the dictionary's keys and values
for key, value in sequence.items():
relay.on()
sleep(key)
relay.off()
sleep(value)
setup() #send handshake to board to prime it.
t1 = threading.Thread(target = lightshow, args=(flickerRGB, relay1))
t2 = threading.Thread(target = lightshow, args=(flickerWhite, relay2))
t1.start()
t2.start()
#send handshake to Relay board to reset it
setup()
は、基本的にはプログラムが/オフパターンに異なると照明のスイッチを同時に2つのリレーを切り替え:
は、以下の私のコードスニペットです。
スレッディング以外の方法がある場合は、教えてください。
多くのおかげで、
ポール
は、次の2つのスレッドの前にセットアップを行うにはしたくないではない、なぜそのわずか、ハードコードのタイムアウト以来? – stark
はい、setup()は、リレーボードにパルス列を送信してプライミングしてリレーにアクセスできるようにします。また、プログラムの最後にsetup()を呼び出してリレーボードをリセットします。 –