Ich versuche, eine parallele Foreach-Schleife mit DoMC zu bauen, aber es gibt einige seltsame Verhaltensweisen. Der Code wie folgt aussiehtR foreach, die für Schleifen seltsames Verhalten enthält
for (file in files) {
do stuff
for (extra in extras) {
do some heavy stuff
}
}
- Wenn ich die domc oder DoParallel laden, beginnt die Schleife ein Kern verwendet wird, aber in der zweiten Schleife nutzt es alle 4 Kerne
- Wenn I schalten die zum Schleifen% bis foreach Do% bekomme ich das exakt gleiche Verhalten.
- Wenn ich foreach für die äußere Schleife verwende und die innere als eine for-Schleife lasse, wird das Skript langsam. Es beginnt mit 4 Jobs parallel und dann stoppen sie alle und die CPU-Auslastung nimmt ab.
Was ich will ist die obere Schleife und nicht die innere Sekunde parallelisieren. Weiß jemand was los ist? Ich habe foreach und dOMC in der Vergangenheit benutzt und hatte dieses Problem nie zuvor.
Die Antwort ist gut, danke. Ich habe herausgefunden, dass das Problem anders ist, deshalb muss ich eine neue Frage dafür stellen. – Michael
Wenn Sie auf einem sehr großen Datensatz mit vielen internen Berechnungen und Transformationen schreiben, werden Sie wahrscheinlich zu einem schnellen Speicherschwellen kommen, indem Sie die Rate erhöhen, mit der die CPU arbeitet. Versuchen Sie es mit 'rm()' und 'gc()' um Zwischendaten von INNEN JEDER SCHLEIFE zu löschen, nachdem sie an ein Array, einen Rahmen oder eine Datei im permanenten Speicher angehängt wurden, um zu sehen, ob dies den Speicher freigibt und es mit Ihrem neuen Multicore-Programm Schritt halten kann. – sconfluentus