저는 파이썬 프로그래밍과 동시성을 처음부터 충분히 다루기에 새롭기 때문에 어떤 용어라도 용서해주십시오.파이썬 : 두 스레드가 완료 될 때까지 함수의 실행을 멈추는 방법
내 프로그램은 "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()
는 기본적으로 프로그램이 온/오프 패턴을 다른과 불을 전환하는 동시에 두 개의 릴레이 스위치 :
다음은 내 코드입니다.
스레딩 이외의 다른 방법이 있다면 알려주십시오.
많은 감사,
이 할 이유는 단지 하드 타임 아웃 이후
폴? – stark
예, setup()은 릴레이 보드에 펄스 트레인을 보내어 프레이밍하여 릴레이에 액세스 할 수 있으며, 프로그램 끝에서 setup()을 호출하여 릴레이 보드를 재설정합니다. –