Ich habe ein Skript, das wiederholt ausgeführt wird und ein Ergebnis für jede Zeile in der Datentabelle zurückgibt.Ich kann nicht in eine Operation für jede Zelle in der Tabelle zerlegt werden, daher gibt jede Iteration einen Ergebnisvektor zurück, der einem Wert für jede Zeile in der Datentabelle entspricht.
dt=current data table();
nr=n rows(dt);
result=J(nr, 1, .)
/*
script body assigns values to result vector
*/
result;
Ich muss diese Operation hundert- oder tausendmal wiederholen, und jede Iteration dauert etwa 0,5 Sekunden.Ich sammle alle zurückgegebenen Ergebnisse in einer Matrix, die dann weiter zusammengefasst wird.Die Reihenfolge der generierten Ergebnisse spielt keine Rolle.
Wenn dies parallelisiert/multithreaded sein könnte, würde es viel schneller laufen.
Ich möchte die Funktion Parallel Assign() verwenden, die die Syntax hat.Ich denke, was ich tun muss, ist eine globale Variable zu erstellen result_matrix = [], Übergeben Sie das an die lokale Funktion, die in Parallel Assign() verwendet wird, und hängen Sie dann am Ende des Ausdrucks an Ergebnis Vektor zu result_matrix.result_matrix werde haben Nr Reihen und n_Iterationen Säulen.
</CODE></PRE>
<P>Irgendwelche Vorschläge, wie dies zu tun ist.Letztendlich müssen Sie das mittlere Ergebnis für jede Zeile in berechnen<STRONG> result_matrix</STRONG> um einen zugewiesenen Wert für jede Zeile in der Datentabelle zu erhalten, das heißt</P>
<PRE><CODE class=" language-jsl">final_result_vector = V Mean(results_matrix`);