python线程问题
我想在列表中显示我的线程结果 我有以下示例代码:python线程问题,python,multithreading,Python,Multithreading,我想在列表中显示我的线程结果 我有以下示例代码: def parallelizer_task(processor,input,callback): output = processor(input) if callback: callback(output) return output class ThreadsParallelizer(Parallelizer): def parallelize(self,processors,input=N
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)>
*
*
*
有没有办法让线程结果出现在列表中?是的,例如,您可以使用
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