In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?Ora JMP può connettersi senza problemi a Python e JSL e Python possono chiamarsi a vicenda.
Ho un compito:
1. **Ricevi ed estrai dati (py):** Ogni minuto, usa il codice Python per ricevere dati da un'API ogni 3 secondi. Estrai dati strutturati dai dati ricevuti in tempo reale e memorizzali in un array di memoria A. Estrai immediatamente i dati in un altro array di memoria B. Quindi, cancella immediatamente l'array di memoria A per preparare il batch di dati successivo (questo tempo di elaborazione è sufficiente e non causerà blocchi). Alla fine del minuto, usa il codice Python per creare una nuova tabella JMP (chiamiamola Tabella A) e scrivi i dati strutturati dall'array di memoria B in questa tabella JMP. Infine, cancella l'array di memoria B.
2. **Concatenazione e selezione delle azioni (JSL):** utilizzare JSL per aggiungere i dati dalla tabella JMP A appena creata a una tabella JMP B esistente. Eseguire calcoli di selezione delle azioni utilizzando indicatori tecnici in JSL sulla tabella B combinata. Quindi, chiudere la tabella JMP A.
Questo processo si ripete continuamente.
Quale dei due approcci seguenti è migliore per questa situazione, concentrandosi sul funzionamento stabile e sul consumo ridotto delle risorse del sistema?
A. All'interno di un singolo script Python generale, esegui continuamente le parti di ricezione/estrazione dei dati (py) e di concatenazione/selezione delle azioni (JSL), utilizzando i timer.
B. All'interno di un singolo script JSL generale, eseguire continuamente le parti di ricezione/estrazione dei dati (py) e di concatenazione/selezione delle azioni (JSL), utilizzando i timer.
Grazie!
Automazione e scriptingFinestreR: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?DeepSeek R1 è

R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?grok3

R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?Scrivi due programmi separati e lasciali entrambi in esecuzione. Puoi usare JMP per avviare Python tramite RunProgram, o Python per avviare JMP tramite qualsiasi cosa usi Python. Ma inizia con un file .py e uno .jsl ed eseguili manualmente finché non sono sottoposti a debug.
Fai in modo che il codice Python inserisca il lavoro completato in una directory con nomi di file con timestamp. Fai in modo che suoni un allarme se il lavoro si sta accumulando (perché l'altro worker ha fallito).
Fai in modo che il codice JSL si svegli ogni 10 secondi per usare filesInDirectory per cercare nuovo lavoro. Fai in modo che suoni un allarme se sono passati >2 minuti da quando è stato trovato del lavoro (perché l'altro worker ha fallito).
In entrambi i casi Python e JMP, i programmi sono progettati per andare in loop all'infinito. Non dovresti creare un controller che li rilancia continuamente. Tutte le comunicazioni avvengono tramite il file system, creando ed eliminando file.
È possibile che ci sia una gara tra il file writer e il file reader; se JMP sta leggendo un output incompleto, aspetta semplicemente che ci siano due file disponibili e lavora sul penultimo. Questo sarà un minuto indietro, ovviamente.
R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?Potrei aggiungere una domanda (forse pigra, scusate) sullo stesso argomento generale?
Ho un'ampia base di codice in JSL (oltre 10.000 righe) che esegue un'ampia gamma di pre-elaborazioni sequenziali, trasformazioni, analisi e riorganizzazione di un grande download automatico di dati mensili che ottengo dai miei RDBMS istituzionali e che consiste ogni volta in una dozzina di file in vari formati (xml, csv, xls, ecc.).
Mi sto gradualmente avviando verso la pensione e non voglio che il mio codice e il prezioso database JMP pulito e utile che ne deriva sprofondino nell'oblio. Tuttavia, i miei migliori colleghi che si sono occupati del progetto sono tutti programmatori Python e non hanno molta entusiasmo per l'apprendimento di JSL.
La mia idea è di scomporre il mio codice JSL in moduli logici di dimensioni modeste (diciamo ~500 righe di codice), ognuno dei quali esegue un passaggio ben definito nel processo complessivo con input e output chiaramente definiti. POI, avvolgerei ogni modulo in una sorta di wrapper Python con cui i miei colleghi potrebbero lavorare, evitando di dover imparare i dettagli essenziali del JSL. Potrei anche includere alcuni hook Python nel JSL che potrebbero consentire loro di estrarre informazioni di base per la risoluzione dei problemi quando il JSL incontra dei problemi.
Ecco la mia domanda: qual è il miglior video, white paper, capitolo di manuale, thread di discussione, libro, seminario, ecc. su questo sito che potrebbe aiutare me (un completo novellino di Python) a capire che tipo di hook e wrapper potrebbero essere le cose che sto cercando... con esempi di codice Python che controlla e "annusa" il codice JSL esistente in questo modo.
Forse è una domanda senza risposta, ma ogni suggerimento è ben accetto.
R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?@Paul_Nelson
R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?Questi potrebbero dare qualche idea
E forse questo, ma inizia con quelli menzionati prima
R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?La cosa migliore e più importante che si possa fare è suddividere il JSL in componenti modulari ben definiti e documentati.
Lo scripting Python può fare un jmp.run_jsl('' codice script ''') quindi se le tue routine sono state trasformate in funzioni JSL, possono essere chiamate da Python. Se vuoi approfondire, dovrai imparare Python per creare oggetti basati su Python che si comportino nel modo in cui un programmatore Python si aspetterebbe. Se riesci a rendere le tue routine abbastanza piccole e ben documentate, può essere il loro lavoro tradurre da JSL a Python, a patto che l'algoritmo sia stato ben documentato.
Inoltre, il supporto Python in JMP avanza con ogni release, quindi le soluzioni alternative necessarie in 18 possono essere gestite in modo nativo in JMP 19 o 20,.. L'attenzione attuale in JMP 18 e 19 è stata l'interoperabilità dei dati. Non esiste ancora l'equivalente Python della funzione JSL Python Execute( ), in cui elenchi di input, output e codice vengono inviati oltre il confine. Il meglio che può essere emulato sarebbe fare qualcosa del tipo.
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);
...
''')
Nella versione 19 è disponibile un certo supporto per l'interoperabilità da Python, grazie alla possibilità di ottenere/impostare direttamente lo spazio dei nomi globale e le variabili dello spazio dei nomi direttamente da Python, quindi il Python Get() di cui sopra potrebbe non essere strettamente necessario in JMP 19 e versioni successive.
Questo è un buon argomento da approfondire: una migliore capacità di esporre le funzioni JSL all'ambiente Python.
R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?Sono d'accordo con @Craige_Hales sulla necessità di testare ogni percorso. Quando entrano in gioco grandi quantità di dati e prestazioni elevate, non c'è sostituto per il test nel tuo ambiente. Non c'è una vera scorciatoia per dire che uno è meglio dell'altro senza testare e fare misurazioni. Anche in questo caso, i suggerimenti e i trucchi per l'ottimizzazione delle prestazioni possono essere specifici per ogni linguaggio.
Esistono alcuni principi generali.
- Non maneggiare, spostare o duplicare i dati più dello stretto necessario.
- Prestate attenzione a O( ) del vostro codice, quando possibile eseguite cicli di srotolamento evitate algoritmi n^2 o peggiori.
- Ridurre al minimo l'accesso al file system nelle aree critiche e assicurarsi che la memoria non cresca oltre la memoria fisica, altrimenti si passerà al disco.
- RAM fisica vs SSD locale vs HDD vs unità di rete.
Nella ricerca delle prestazioni assolute, potresti dover testare sezioni del tuo codice per vedere quale funziona più velocemente, JSL o Python. Ad esempio, potrebbe essere più veloce elaborare i dati come un array numpy o un dataframe pandas e convertirli in una tabella dati tutti in una volta, anziché aggiungerli a una tabella dati di grandi dimensioni in JSL (non l'ho testato, quindi non lo so, sto solo facendo un esempio). Devi testare ogni componente principale della pipeline quando le prestazioni sono critiche.
R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?Grazie!! Li ho scaricati tutti e li approfondirò!!!
R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?Paul, grazie mille. I tuoi commenti mi dicono che sono da qualche parte nel giusto campo di gioco. Sono COSÌ riconoscente per tutto quello che stai facendo per i Python JMPing (o Pythonic JMpers) là fuori. Sono sicuro che ci sono molti grandi progetti JSL legacy consolidati là fuori in questa situazione di non voler essere riscritti, ma che hanno bisogno di aggiungere meccanismi per "decomprimere la loro patta", per così dire (perdonami) affinché la gente di Python possa sbirciare dentro.
Con gratitudine, John
R: In questa situazione, dovrei usare Python o JSL per lo script di controllo principale?Grazie a tutti gli esperti per le vostre risposte.
Ho condotto un confronto tra Python e JSL per il calcolo di un indicatore complesso.
Il consumo di tempo varia di circa 10 volte.
Ho eseguito la matrice completa utilizzando JSL.
Poiché non ho familiarità con Python, ho potuto solo chiedere a varie IA di implementarlo in Python secondo questa logica JSL.
Il risultato mostra che la modifica di grok3 è la migliore.
