2013-08-17 148 views
0

我與我的halt_listener線程有問題。我可以開始import_1,但它不會產生halt_listener線程。我在已知的良好代碼之後對此進行了構造,唯一的區別是在最後一次迭代中,halt_listener得到了一個管道而不是一個隊列。Python線程無法啓動。

class test_imports:#Test classes remove 
     alive = {'import_1': True, 'import_2': True}; 

     def halt_listener(self, control_Queue, thread_Name, kill_command): 
      while True: 
       print ("Checking queue for kill") 
       isAlive = control_queue.get() 
       print ("isAlive", isAlive) 
       if isAlive == kill_command: 
       print ("kill listener triggered") 
       self.alive[thread_Name] = False; 
       return 

     def import_1(self, control_Queue, thread_Number): 
      print ("Import_1 number %d started") % thread_Number 
      t = Thread(target=test_imports.halt_listener, args=(control_Queue, 'import_1', 't1kill')) 
      count = 0 
      global alive 
      run = test_imports.alive['import_1']; 
      while run: 
       print ("Thread type 1 number %d run count %d") % (thread_Number, count) 
       count = count + 1 
       print ("Test Import_1 ", run) 
       run = self.alive['import_1']; 
      print ("Killing thread type 1 number %d") % thread_Number 



     def import_2(self, control_queue, thread_number): 
      print ("Import_2 number %d started") % thread_number 
      count = 1 
      while True: 
       alive = control_queue.get()     
       count = count + 1 
       if alive == 't2kill': 
        print ("Killing thread type 2 number %d") % thread_number 
        return 
       else: 
        print ("Thread type 2 number %d run count %d") % (thread_number, count) 

任何人都有任何指向我出錯的地方。

回答

2

您從不打電話t.start()實際啓動線程。

+0

咄Durp!擡頭先生代碼仍然拋出類型錯誤,但她是正確的解決了該問題 –

+0

't.start()'啓動線程,而不是't.run()'。 – Ringding

+0

@Ringding是的,固定的。 brainfart。 – Amber

0

一切都沒問題,你只需要添加t.start()來啓動你的線程

t = Thread(target=test_imports.halt_listener, args=(control_Queue, 'import_1', 't1kill')) 
t.start()