Python:如何在两个线程完成之前停止执行函数

时间:2016-10-18 22:33:21

标签: python multithreading python-multithreading

我对python编程足够新,并且第一次开始涉及并发,所以请原谅任何条款。

我的程序启动两个线程,每个线程调用一个函数" 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()

基本上,程序同时切换两个继电器,以打开具有不同开/关模式的灯。

如果除了穿线之外有更好的方式,请告诉我。

非常感谢,

保罗

1 个答案:

答案 0 :(得分:1)

#send handshake to Relay board to reset it
t2.join() #block until thread exits
setup()

但由于它只是一个硬编码超时,为什么不只是

time.sleep(61)