从父线程/程序中选择性线程终止

时间:2012-02-14 23:21:19

标签: python multithreading

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'

1 个答案:

答案 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')