2013-03-11 167 views
0

我想我的线程在列表中的结果。蟒蛇线程问题

我有以下示例代码:

def parallelizer_task(processor,input,callback): 
    output = processor(input) 
    if callback: 
     callback(output) 
    return output 

class ThreadsParallelizer(Parallelizer): 

    def parallelize(self,processors,input=None,callback=None): 
     threads = [] 
     for processor in processors: 
      t = threading.Thread(target=parallelizer_task,args=(processor,input,callback)) 
      threads.append(t) 
      t.start() 
     return threads 
parallelizer = ThreadsParallelizer 

但是我有线程列表作为输出;

* <Thread(Thread-1, started 4418719744)> 
* <Thread(Thread-2, started 4425617408)> 
* <Thread(Thread-3, started 4429950976)> 

有没有办法让线程产生列表?

回答

1

是的,因为你可以使用例如join。它会强制主线程等待子线程完成工作。然后,您可以将数据存储在threading.Thread对象中,如下所示:

def parallelizer_task(processor,input,callback): 
    output = processor(input) 
    if callback: 
     callback(output) 

    # Attach result to current thread 
    thread = threading.currentThread() 
    thread.result = output 


class ThreadsParallelizer(Parallelizer): 

    def parallelize(self,processors,input=None,callback=None): 
     threads = [] 
     for processor in processors: 
      t = threading.Thread(...) 
      threads.append(t) 
      t.start() 

     # wait for threads to finish 
     for th in threads: 
      th.join() 

     # do something with results 
     results = [th.result for th in threads] 
     return results 
+0

帮助了很多..谢谢 – tunaktunak 2013-03-11 14:45:30