2016-05-30 9 views
-1

Ich möchte für Schleife in parallelen Threads laufen.R für Schleife parallel

ist mein Datum-Set aus dem Aktienmarkt und ist von der Form:
Type ID Token Buy/Sell Price Quantity

Typ:
N für New Order
M für einen Auftrag ändern
X
einen Auftrag zum Löschen T für einen Auftrag, der gehandelt wird

ID ist eine sechzehnstellige eindeutige Nummer, die einer bestimmten Reihenfolge entspricht. Sie wird generiert, wenn eine New Order kommt. Es ist erforderlich, wenn eine Bestellung Modified, Cancelled oder Traded ist.

Token entspricht verschiedenen Unternehmen an der Börse. Sie sind 5-stellige Nummern.

Eine Trade Nachricht ist ein bisschen anders. Seine von der Form:
Type BuyOrderID SellOrderID Token Price Quantity

Die vier Typen sind wie folgt:

N 1200000000006773 48256 B 13595 4000 
M 1200000000006773 48256 B 13585 4000 
X 1200000000006649 48331 B 70125 500 
T 1200000000009326 1200000000007756 48321 7275 8000 

Jetzt möchte ich durch jede Zeile analysieren, speichern Sie die Token in einer Hash-Tabelle, und mit den entsprechenden Aktionen weitergehen.

Ich habe mehr als eine Milliarde Zeilen, also brauche ich Parallelverarbeitung für schnellere Ergebnisse. Wie ändere ich die for-Schleife (egal was?), Um die parallele Verarbeitung zu nutzen?

Vielen Dank im Voraus.

+2

Bitte geben Sie eine [minimal reproduzierbar und vollständiges Beispiel] (http://stackoverflow.com/a/5963610/1412059). Sie müssen ernsthaft untersuchen, ob Sie eine R-Level-Schleife nicht vermeiden können. Ich bezweifle ernsthaft, dass die Parallelisierung allein (selbst mit einer großen Anzahl von CPUs) bei Ihren Leistungsproblemen helfen wird. – Roland

Antwort

2

könnten Sie verwenden die parallel Bibliothek:

library(parallel) 
cores.number <- detectCores() 
cl <- makeCluster(cores.number, type = "FORK") 
clusterSetRNGStream(cl, iseed = seed) 

Und dann parLapply verwenden, parSapply usw. wie folgt aus:

parSapply(cl, X, function) 

Überprüfen Sie die Paketdokumentation: https://stat.ethz.ch/R-manual/R-devel/library/parallel/doc/parallel.pdf

+2

Das Paket 'parallel' gehört jetzt zur R-Basisbibliothek. Sofern die installierte 'R'-Version aktuell ist, ist die neueste Dokumentation mit' vignette ("parallel", "parallel") 'verfügbar. – RHertel