2016-03-27 2 views
1

Ich habe den folgenden Code in einer anderen Funktion verschachtelt (so dies nicht jede Art von Stand-alone-Datei ist):Python Threading: Wie ein Wörterbuch aus den Ergebnissen bauen

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 gibt die drei Tupeln, kf2_index...etc.. Ich brauche alle Tupel (Schlüssel, Daten) in meinem endgültigen Wörterbuch.

ich habe:

import threading 
from threading import Thread 

Ich habe aber keine Ahnung, wie dieser Wörterbuch aus der Ausgabe der Funktion zu bauen. Es gibt nur die 5 Trainingssatz Prozentsätze, also wie führe ich diese parallel und baue das Wörterbuch?

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

Dann ... ??

+1

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

+0

Ok, danke dafür ... da das upvoted ist, kann ich nicht löschen. Ich werde sehen, ob ich eine Antwort konstruieren kann und dies zu einem generischen wie mit dem Wörterbuch-Such-Tag machen kann. – bordeo

Antwort

1

Ich fand eine Lösung in dem Link unter der Frage veröffentlicht. Um ein Wörterbuch in der Art und Weise zu erzeugen, die ich oben beschrieben,

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} 
Verwandte Themen