Warten (0) vs. Warten(n) vs. Ausführen vs. BeendenIch habe sehr große und ständig wachsende Datentabellen, daher habe ich Probleme mit Formeln, die nicht abgeschlossen werden. Ich wünschte, JMP würde einfach einen Mechanismus einbauen, der verhindert, dass Skripte fortgesetzt werden, bis jede Zeile fertig ist, aber vielleicht gibt es einen Grund dafür, dies nicht zu tun, an den ich nicht denke. Normalerweise verwende ich einen Befehl „wait(n)“ (z. B. „wait(30);“), aber wenn der Datensatz wächst, muss ich in den Tausenden von Codezeilen ständig unzählige Instanzen von „wait“ aktualisieren, da die Tabellen mit Sicherheit zu groß werden Codezeilen, um die Auswertung abzuschließen. Später dachte ich, ich hätte gelernt, dass wait(0); wäre dynamisch. Es würde so lange warten, bis die Auswertung abgeschlossen ist, bevor mit der nächsten Zeile fortgefahren wird. Deshalb habe ich alles in „wait(0)“ geändert, aber jetzt werden viele Zeilen nicht abgeschlossen und daher bricht das Skript ab. Habe ich falsch gedacht, dass das wait(0); Befehl wäre dynamisch, wie ich es beschrieben habe? Ich habe die Befehle „Ausführen“ und „Fertig stellen“ ausprobiert, aber keiner hat funktioniert. Ich ging zurück und setzte zum Beispiel „wait(30)“ ein; an einer Stelle und es hat wieder funktioniert. Bleibe ich also bei diesen statischen Zeitinkrementen, die ich im Laufe der Zeit zwangsläufig weiter ändern muss. Oder mache ich hier etwas falsch?
Automatisierung und SkripterstellungBetreff: Wait(0) vs Wait(n) vs Run vs FinishIch denke, wenn Sie Formeln in den Tabellen haben, die Sie verknüpfen/aktualisieren, dann könnte es hilfreich sein. Ich glaube, ich hatte noch nie Probleme mit direkt im Zusammenhang mit JMP-Datentabellen, die die Verwendung von „wait“ erforderlich gemacht hätten (die meisten Probleme hingen damit zusammen, dass einige Variablen keine Werte erhielten oder mit Visualisierungen in einem neuen Fenster). Ich kenne nicht genügend technische Details darüber, was JMP im Hintergrund tut, also könnten Sie vielleicht versuchen, eine E-Mail an support@jmp.com zu senden, um Hilfe zu erhalten? Markieren Sie auch @Jeff_Perkinson basierend auf dieser alten Antwort . Wie kann ich die sequentielle Ausführung meines Skripts erzwingen?
Ein paar Fragen:
Verwenden Sie Current Datatable(), um auf Datentabellen zu verweisen? Welche JMP-Version verwenden Sie?
Links:
https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/scripting-data-tables.shtml#ww2071832
https://www.jmp.com/support/help/en/15.2/index.shtml#page/jmp/scripting-numbers-strings-arrays-and-lists.shtml#
Betreff: Wait(0) vs Wait(n) vs Run vs FinishIch hätte nicht angeben sollen, dass es nicht nur um Formelauswertungen geht, sondern auch um Aktionen wie das Öffnen und Verknüpfen oder Aktualisieren einer anderen Tabelle, das Sortieren einer Tabelle usw. Funktionieren diese Befehle bei Dingen, die keine Formeln sind?
Betreff: Wait(0) vs Wait(n) vs Run vs FinishHaben Sie versucht, Folgendes zu verwenden:
dt << Run Formulas();
oder
dt << Rerun Formulas;
Soweit ich weiß, sollte JMP warten, bis die Formelauswertung abgeschlossen ist, bevor es fortfährt.
Weitere mögliche Optionen: Sind auch Formeln notwendig? Könnten Sie mit << Set Each Value anstelle von Formeln zurechtkommen? Möglicherweise auch die Verwendung von dt << Begin Data Update ; und dt << End Data Update ; könnte von Nutzen sein.
Betreff: Warten(0) vs Warten(n) vs Ausführen vs BeendenIm Allgemeinen verwende ich in meinen Skripten << Ausführungsformeln.
Aber ich stimme dem zu, was @RVhydrA geschrieben hat.
Dem Inhalt des Skriptindex zufolge sollte wait(0) die gleiche Aufgabe erfüllen:

Betreff: Warten(0) vs Warten(n) vs Ausführen vs Beenden- Verwenden Sie wait(0), um während einer Schleife Fenster anzuzeigen und Schaltflächen funktionieren zu lassen.
- Verwenden Sie < < i>
- Verwenden Sie wait(1), um ein Skript langsamer auszuführen, beispielsweise um eine Abfolge von Änderungen zu visualisieren.
Die Tabellenformeln von JMP werden im Hintergrund ausgewertet, wenn JMP im Leerlauf ist. Wait( n > 0 ) versetzt JMP in den Leerlauf, damit die Formeln ausgewertet werden können. Die Auswertung der Formeln während der Leerlaufzeit ist ziemlich langsam. Bei Verwendung von dt< <>
Viele Datentabellenbefehle haben das <
Die Leerlaufzeit „wait(n)“ ermöglicht es dem Betriebssystem, die Anzeige zu aktualisieren und Tastenanschläge und Mausklicks an Ihr Programm zu senden. Wenn Sie eine Schleife ohne Leerlaufzeit „wait(0)“ schreiben, die Plattformen öffnet und schließt, sehen Sie keine Aktivität auf der Anzeige. Wenn Sie sehen müssen, wie die Fenster aufspringen, ist „wait(0)“ dort angemessen. Auch für „wait(0)“ gibt es eine kleine Zeitstrafe, selbst wenn nichts passiert.