Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Jetzt kann JMP nahtlos eine Verbindung mit Python herstellen und JSL und Python können sich gegenseitig aufrufen.
Ich habe eine Aufgabe:
1. **Daten empfangen und extrahieren (py):** Verwenden Sie jede Minute Python-Code, um alle 3 Sekunden Daten von einer API zu empfangen. Extrahieren Sie strukturierte Daten in Echtzeit aus den empfangenen Daten und speichern Sie sie in einem Speicherarray A. Extrahieren Sie die Daten sofort in ein anderes Speicherarray B. Löschen Sie dann sofort das Speicherarray A, um es für den nächsten Datenstapel vorzubereiten (diese Verarbeitungszeit ist ausreichend und verursacht keine Blockierung). Erstellen Sie am Ende der Minute mit Python-Code eine neue JMP-Tabelle (nennen wir sie Tabelle A) und schreiben Sie die strukturierten Daten aus dem Speicherarray B in diese JMP-Tabelle. Löschen Sie abschließend das Speicherarray B.
2. **Verketten und Aktienauswahl (JSL):** Verwenden Sie JSL, um die Daten aus der neu erstellten JMP-Tabelle A an eine vorhandene JMP-Tabelle B anzuhängen. Führen Sie Aktienauswahlberechnungen mithilfe technischer Indikatoren in JSL an der kombinierten Tabelle B durch. Schließen Sie dann JMP-Tabelle A.
Dieser Vorgang wiederholt sich ständig.
Welcher der folgenden beiden Ansätze ist für diese Situation besser, wobei der Schwerpunkt auf einem stabilen Betrieb und einem reduzierten Verbrauch von Systemressourcen liegt?
A. Führen Sie in einem einzigen, übergreifenden Python-Skript die Teile für den Datenempfang/die Datenextraktion (py) und die Verkettung/Aktienauswahl (JSL) mithilfe von Timern kontinuierlich aus.
B. Führen Sie die Teile für den Datenempfang/die Datenextraktion (py) und die Verkettung/Aktienauswahl (JSL) mithilfe von Timern kontinuierlich in einem einzigen, übergreifenden JSL-Skript aus.
Danke!
Automatisierung und SkriptingWindowsBetreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?DeepSeek R1

Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?grok3

Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Schreiben Sie zwei separate Programme und lassen Sie beide laufen. Sie können JMP verwenden, um Python über RunProgram zu starten, oder Python, um JMP über das von Python verwendete Programm zu starten. Beginnen Sie jedoch mit einer .py- und einer .jsl-Datei und führen Sie sie manuell aus, bis sie debuggt sind.
Sorgen Sie dafür, dass der Python-Code abgeschlossene Arbeiten in einem Verzeichnis mit Zeitstempeldateinamen ablegt. Sorgen Sie dafür, dass ein Alarm erklingt, wenn sich die Arbeit häuft (weil der andere Worker versagt hat).
Lassen Sie den JSL-Code alle 10 Sekunden aufwachen, um filesInDirectory für die Suche nach neuer Arbeit zu verwenden. Lassen Sie einen Alarm ertönen, wenn seit der letzten Arbeit mehr als 2 Minuten vergangen sind (weil der andere Worker ausgefallen ist).
Sowohl bei Python als auch bei JMP sind die Programme so konzipiert, dass sie endlos in einer Schleife laufen. Sie sollten keinen Controller erstellen, der sie immer wieder neu startet. Die gesamte Kommunikation erfolgt über das Dateisystem, wobei Dateien erstellt und gelöscht werden.
Es kann zu einem Wettlauf zwischen dem Dateischreiber und dem Dateileser kommen. Wenn JMP unvollständige Ausgaben liest, warten Sie einfach, bis zwei Dateien verfügbar sind, und arbeiten Sie an der vorletzten. Diese wird natürlich eine Minute später sein.
Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Könnte ich eine (möglicherweise faule, entschuldigen Sie) Frage zum gleichen allgemeinen Thema anhängen?
Ich verfüge über eine große Codebasis in JSL (mehr als 10.000 Zeilen), die eine Vielzahl sequentieller Vorverarbeitungs-, Transformations-, Analyse- und Neuorganisationsvorgänge für einen großen automatischen monatlichen Datendownload durchführt, den ich von meinem institutionellen RDBMS erhalte und der jedes Mal aus einem Dutzend Dateien in verschiedenen Formaten (XML, CSV, XLS usw.) besteht.
Ich gehe langsam in den Ruhestand und möchte nicht, dass mein Code und die daraus resultierende, sehr wertvolle, saubere und nützliche JMP-Datenbank in Vergessenheit geraten. Meine besten Kollegen, die das Projekt übernehmen könnten, sind jedoch alle Python-Programmierer und haben keine große Lust, JSL zu lernen.
Meine Idee ist, meinen JSL-Code in logische Module von überschaubarer Größe (sagen wir ~500 Zeilen Code) aufzuteilen, von denen jedes einen genau definierten Schritt im Gesamtprozess mit klar definierten Ein- und Ausgaben ausführt. DANN würde ich jedes Modul in eine Art Python-Wrapper einbinden, mit dem meine Kollegen arbeiten können, ohne sich mit den kleinsten Details des JSL befassen zu müssen. Ich könnte auch einige Python-Hooks in das JSL aufnehmen, mit denen sie grundlegende Informationen zur Fehlerbehebung extrahieren können, wenn beim JSL Probleme auftreten.
Hier ist meine Frage: Welches ist das beste Video, Whitepaper, Handbuchkapitel, der beste Diskussionsthread, das beste Buch, Seminar usw. auf dieser Site, das mir (einem absoluten Python-Neuling) dabei helfen könnte, herauszufinden, welche Arten von Hooks und Wrappern das sein könnten, wonach ich suche … mit Beispielen von Python-Code, der vorhandenen JSL-Code auf diese Weise steuert und „erschnüffelt“.
Vielleicht ist das eine unbeantwortbare Frage, aber ich bin für alle Vorschläge dankbar.
Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?@Paul_Nelson
Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Diese könnten einige Ideen geben
Und vielleicht dies, aber beginnen Sie mit den zuvor erwähnten
Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Das Aufteilen der JSL in modulare, gut definierte und dokumentierte Komponenten ist das Beste und Umfassendste, was Sie tun können.
Das Python-Skripting kann ein jmp.run_jsl(''Skriptcode ''') ausführen, sodass Ihre Routinen, wenn sie in JSL-Funktionen umgewandelt wurden, von Python aus aufgerufen werden können. Wenn Sie tiefer einsteigen möchten, müssen Sie Python lernen, um Python-basierte Objekte zu erstellen, die sich so verhalten, wie es ein Python-Programmierer erwarten würde. Wenn Sie Ihre Routinen klein genug und gut dokumentiert halten können, kann es ihre Aufgabe sein, sie von JSL in Python zu übersetzen, solange der Algorithmus gut dokumentiert wurde.
Außerdem wird die Python-Unterstützung in JMP mit jeder Version verbessert, sodass in 18 erforderliche Workarounds in JMP 19 oder 20 nativ behandelt werden können. Der aktuelle Schwerpunkt in JMP 18 und 19 liegt auf der Dateninteroperabilität. Es gibt noch kein Python-Äquivalent zur JSL-Funktion Python Execute( ), bei der Listen mit Eingaben, Ausgaben und Code über die Grenze gesendet werden. Das Beste, was emuliert werden kann, wäre etwas wie Folgendes.
import jmp
jmp.run_jsl('''
...
Include("Path_to_file");
v1 = Python Get("py_var1");
v2 = Python Get("py_var2");
result = my_jsl_fn(v1,v2);
Python Send(result);
...
''')
In 19 gibt es eine gewisse Unterstützung für die Interoperabilität mit Python durch die Möglichkeit, globale Namespaces und hier Namespacevariablen direkt aus Python abzurufen/festzulegen, sodass das obige Python Get() in JMP 19 und höher möglicherweise nicht unbedingt erforderlich ist.
Das ist ein gutes Thema für uns, um JSL-Funktionen besser in der Python-Umgebung verfügbar zu machen.
Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Ich stimme mit @Craige_Hales überein, dass jeder Pfad getestet werden muss. Wenn große Datenmengen und hohe Leistung ins Spiel kommen, gibt es keinen Ersatz für Tests in Ihrer Umgebung. Es gibt keine wirkliche Abkürzung, um zu sagen, dass das eine besser ist als das andere, ohne Tests und Messungen durchzuführen. Selbst dann können Tipps und Tricks zur Leistungsoptimierung für jede Sprache spezifisch sein.
Es gibt einige allgemeine Grundsätze.
- Bearbeiten, verschieben oder duplizieren Sie die Daten nicht mehr als unbedingt nötig.
- Achten Sie auf O( ) Ihres Codes und vermeiden Sie nach Möglichkeit Schleifen und n^2-Algorithmen oder schlechtere Algorithmen.
- Minimieren Sie den Dateisystemzugriff in kritischen Bereichen und stellen Sie sicher, dass der Speicher nicht über den physischen Speicher hinaus wächst, da Sie sonst auf die Festplatte auslagern müssen.
- Physischer RAM vs. lokale SSD vs. HDD vs. Netzwerklaufwerk.
Auf der Suche nach absoluter Leistung müssen Sie möglicherweise Abschnitte Ihres Codes testen, um zu sehen, was schneller ist, JSL oder Python. Beispielsweise kann es schneller sein, Daten als Numpy-Array oder Pandas-Datenrahmen zu verarbeiten und auf einmal in eine Datentabelle zu konvertieren, als sie in JSL an eine große Datentabelle anzuhängen (ich habe das nicht getestet, also weiß ich es nicht, ich mache nur ein Beispiel). Sie müssen jede Hauptkomponente der Pipeline testen, wenn die Leistung kritisch ist.
Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Vielen Dank!! Ich habe sie alle heruntergeladen und werde mich damit befassen!!!
Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Paul, vielen Dank. Ihre Kommentare sagen mir, dass ich mich irgendwo im richtigen Bereich befinde. Ich bin SO dankbar für alles, was Sie für die JMPing Pythons (oder Pythonic JMpers) da draußen tun. Ich bin mir sicher, dass es viele große, etablierte Legacy-JSL-Projekte gibt, die in dieser Situation sind, dass sie nicht neu geschrieben werden wollen, sondern Mechanismen hinzufügen müssen, um sozusagen „den Hosenschlitz zu öffnen“ (verzeihen Sie mir), damit Python-Leute einen Blick hineinwerfen können.
Dankbar, John
Betreff: Sollte ich in dieser Situation Python oder JSL für das Hauptsteuerungsskript verwenden?Vielen Dank an alle Experten für Ihre Antworten.
Ich habe einen Vergleich zwischen Python und JSL für eine komplexe Indikatorberechnung durchgeführt.
Der Zeitaufwand unterscheidet sich um fast das Zehnfache.
Ich habe die vollständige Matrix unter Verwendung von JSL ausgeführt.
Da ich mit Python nicht vertraut bin, konnte ich nur verschiedene KIs bitten, es gemäß dieser JSL-Logik in Python zu implementieren.
Das Ergebnis zeigt, dass die Modifikation durch grok3 die Beste ist.
