我有函数检测(),timeralg()
在运行timeralg()函数时,我希望detect()在特定延迟后并行启动。 目前我试过这个
def timeralg(c1,c2,c3,c4):
t=[4,4,4,6,6,20,24,28,32,36,40]#delay determining array
for y in range(0,3):
print 'y is ',y
if((c1>=c2)and(c1>=c3)):
print 'timer1 on for'
x=t[c1]
print x
c1=0
GPIO.output(5,False)#Red1
GPIO.output(13,True)#red2
GPIO.output(12,True)#red3
GPIO.output(7,True)#green1
if(y==2):
t = threading.Thread(detection())
t.start()
print 'processing strtd in from 1'
time.sleep(x-3)
GPIO.output(7,False)
GPIO.output(3,True)#Yellow1
time.sleep(3)
GPIO.output(3,False)#Yellow1
GPIO.output(5,True)#Red1
与此不同,我想要'在我指定的特定延迟后开始。
答案 0 :(得分:3)
您可以按如下方式包裹detection()
:
def delayed_detection():
time.sleep(3)
detection()
然后用:
开始你的主题t = threading.Thread(delayed_detection)
t.start()
您并没有延迟线程的产生,但是您仍然在三秒钟后调用detecton()
答案 1 :(得分:1)
不要等到启动线程,让线程等待开始工作。
首先创建一个新线程。
新主题应该执行以下操作:
time.sleep(N)
while True:
detection()
答案 2 :(得分:0)
使用 sleep()
可以,但效率低下。使用 Timer 会更好,它可以在启动线程之前有效地等待延迟。
timer = threading.Timer(delay, detection)
timer.start(). # will execute detection() after "delay" seconds