def function(message):
if 'START' in message:
timer = 10
#start a thread which sleeps for 'timer' and prints "TIMER EXPIRED"
if 'STOP' in message:
#check if timer is still running, terminate thread if yes (print "TIMER STOPPED")
def main():
function('START')
time.sleep(random_time)
function('STOP')
1.请指出哪种线程最适合这个程序,thread.start_new_thread()似乎没有从主程序中使用exit()或terminate()。
2.如何确保计时器仍在运行,然后终止thred
需要使用线程,因为,Process给出了一个错误,说新进程无法使用旧进程中的变量,我实际上是调用其他函数而不是打印'TIMER EXPIRED'和'TIMER STOPPED'
答案 0 :(得分:-1)
以下是用于停止在上一个函数调用中启动的线程的代码。 在第一次迭代中,启动线程并传递引用(我使其成为全局变量)
全球t1,t1_stop
def timer_run(timer_val):
time.sleep(timer_val)
def funct():
global t1, t1_stop
if 'START' in message:
timer_val =10
t1_stop = threading.Event()
t1 = threading.Thread(target=timer_run, args=(timer_val,))
t1.start()
if 'STOP' in message:
t1_stop.set()
def main():
func('START')
time.sleep(random_time)
func('STOP')