2016-03-27 5 views
1

を辞書を構築するために、私は別の関数にネストされ、次のコード(そう、これは、スタンドアローンのファイルの任意の種類ではありません)があります。Pythonのスレッド:どのような結果から

train_set_percentages = [0.2,0.5,0.8,1.0] 
results = {} 

for i in range(len(train_set_percentages)): 
    kf2_index_percent,kf5_index_percent,loo_index_percent = generate_data_entry(train_set_percentages[i]) 
    results[kf2_index_percent[0]] = kf2_index_percent[1] 
    results[kf5_index_percent[0]] = kf5_index_percent[1] 
    results[loo_index_percent[0]] = loo_index_percent[1] 

generate_data_entryする3つのタプルを返し、 kf2_index...etc.。私は最終的な辞書にすべてのタプル(キー、データ)が必要です。

私がしている:しかし、私は、関数の出力からこの辞書を構築する方法が分からない

import threading 
from threading import Thread 

。 5つのトレーニングセットのパーセンテージしかないので、これらを並行して実行して辞書を構築するにはどうすればよいですか?

for i in range(len(train_set_percentages)): 
    Thread(target=generate_data_entry(train_set_percentages[i])) 

次に...

+1

http://stackoverflow.com/questions/6893968/how-to-get-the-return-value-from-a-thread-in -python –

+0

これはありがたいことです...これはupvotedなので、私は削除できません。答えを作って辞書検索タグの一般的な使い方に変えることができるかどうかがわかります。 – bordeo

答えて

1

質問の下に投稿されたリンクの解決方法が見つかりました。私は上記のように辞書を生成するために、

from threading import Thread 

numbers = [1,2,3,4] 
keys = ['one','two','three','four'] 

def add_to_dict(number,key,dict): 
    dict[key] = number 

n = 5 

dict_list = [{}] * 5 
threads = [None] * 5 

# run threads 
for i in range(len(threads)): 
    threads[i] = Thread(target=add_to_dict,args=(number[i],keys[i],dict_list[i])) 
    threads[i].start() 
for i in range(len(threads)): 
    threads[i].join() 

# merge dictionaries (using Python 3.5 syntax) 
results = {} 
for i in dict_list: 
    results = {**results,**i} 
関連する問題