Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?JMP peut désormais se connecter de manière transparente à Python, et JSL et Python peuvent s'appeler mutuellement.
J'ai une tâche:
1. **Recevoir et extraire des données (py)
* Chaque minute, utilisez le code Python pour recevoir des données d'une API toutes les 3 secondes. Extrayez les données structurées des données reçues en temps réel et stockez-les dans un tableau de mémoire A. Extrayez immédiatement les données dans un autre tableau de mémoire B. Ensuite, effacez immédiatement le tableau de mémoire A pour préparer le prochain lot de données (ce temps de traitement est suffisant et ne provoquera pas de blocage). À la fin de la minute, utilisez le code Python pour créer une nouvelle table JMP (appelons-la Table A) et écrivez les données structurées du tableau de mémoire B dans cette table JMP. Enfin, effacez le tableau de mémoire B.
2. **Concaténation et sélection d'actions (JSL)
* utilisez JSL pour ajouter les données de la table JMP A nouvellement créée à une table JMP B existante. Effectuez des calculs de sélection d'actions à l'aide d'indicateurs techniques dans JSL sur la table B combinée. Fermez ensuite la table JMP A.
Ce processus se répète continuellement.
Laquelle des deux approches suivantes est la meilleure pour cette situation, en mettant l’accent sur un fonctionnement stable et une consommation réduite des ressources système ?
A. Dans un seul script Python global, exécutez en continu les parties de réception/extraction de données (py) et de concaténation/sélection de stocks (JSL), à l'aide de minuteries.
B. Dans un seul script JSL global, exécutez en continu les parties de réception/extraction de données (py) et de concaténation/sélection de stock (JSL), à l'aide de temporisateurs.
Merci!
Automatisation et scriptsFenêtresRe : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?DeepSeek R1 de

Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?grok3

Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?Écrivez deux programmes distincts et laissez les deux s'exécuter. Vous pouvez utiliser JMP pour lancer Python via RunProgram, ou Python pour lancer JMP via tout ce que Python utilise. Mais commencez avec un fichier .py et un fichier .jsl et exécutez-les manuellement jusqu'à ce qu'ils soient débogués.
Faites en sorte que le code Python place le travail terminé dans un répertoire avec des noms de fichiers horodatés. Faites en sorte qu'une alarme retentisse si le travail s'accumule (parce que l'autre travailleur a échoué).
Faites en sorte que le code JSL se réveille toutes les 10 secondes pour utiliser filesInDirectory afin de rechercher un nouveau travail. Faites en sorte qu'une alarme retentisse si plus de 2 minutes se sont écoulées depuis qu'un travail a été trouvé (parce que l'autre travailleur a échoué).
Dans les deux cas, Python et JMP, les programmes sont conçus pour tourner en boucle à l'infini. Vous ne devez pas créer un contrôleur qui les relance sans cesse. Toutes les communications se font via le système de fichiers, en créant et en supprimant des fichiers.
Il est possible qu'il y ait une course entre le rédacteur et le lecteur de fichiers ; si JMP lit une sortie incomplète, attendez simplement qu'il y ait deux fichiers disponibles et travaillez sur l'avant-dernier. Ce sera évidemment une minute de retard.
Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?Puis-je ajouter une question (peut-être paresseuse, désolé) sur le même sujet général ?
J'ai une grande base de code en JSL (plus de 10 000 lignes) qui effectue toute une variété de prétraitements séquentiels, de transformations, d'analyses et de réorganisations d'un grand téléchargement automatique de données mensuel que je reçois de mes SGBDR institutionnels et qui se compose à chaque fois d'une douzaine de fichiers dans divers formats (xml, csv, xls, etc.).
Je me dirige progressivement vers la retraite et je ne veux pas que mon code et la base de données JMP très précieuse et utile qui en résulte tombent dans l'oubli. Cependant, mes meilleurs collègues pour reprendre le projet sont tous des programmeurs Python et ne sont pas vraiment enthousiastes à l'idée d'apprendre JSL.
Mon idée est de décomposer mon code JSL en modules logiques de taille modeste (disons environ 500 lignes de code), chacun d'entre eux exécutant une étape bien définie du processus global avec des entrées et des sorties clairement définies. Ensuite, j'envelopperais chaque module dans une sorte d'enveloppe Python avec laquelle mes collègues pourraient travailler, évitant ainsi d'avoir à apprendre les détails minutieux du JSL. Je pourrais également inclure des hooks Python dans le JSL qui pourraient leur permettre d'extraire des informations de dépannage de base lorsque le JSL rencontre des problèmes.
Voici ma question : quelle est la meilleure vidéo, livre blanc, chapitre de manuel, fil de discussion, livre, séminaire, etc. sur ce site qui pourrait m'aider (un débutant complet en Python) à déterminer quels types de hooks et de wrappers pourraient être les choses que je recherche… avec des exemples de code Python qui contrôle et « renifle » le code JSL existant de cette manière.
Question peut-être sans réponse, mais toute suggestion serait la bienvenue.
Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?@Paul_Nelson
Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?Cela pourrait donner quelques idées
Et peut-être cela, mais commençons par ceux mentionnés plus tôt
Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?Diviser le JSL en composants modulaires bien définis et documentés est la chose la plus importante et la meilleure que vous puissiez faire.
Les scripts Python peuvent faire un jmp.run_jsl('' script code ''') donc si vos routines ont été transformées en fonctions JSL, elles peuvent être appelées depuis Python. Si vous voulez aller plus loin, vous devrez apprendre Python pour créer des objets basés sur Python qui se comportent d'une manière à laquelle un programmeur Python s'attendrait. Si vous pouvez rendre vos routines suffisamment petites et bien documentées, cela peut être leur travail de traduire de JSL en Python, à condition que l'algorithme ait été bien documenté.
De plus, la prise en charge de Python dans JMP progresse à chaque version, de sorte que les solutions de contournement nécessaires dans 18 peuvent être gérées de manière native dans JMP 19 ou 20. L'accent actuel dans JMP 18 et 19 a été mis sur l'interopérabilité des données. Il n'existe pas encore d'équivalent Python de la fonction JSL Python Execute(), où les listes d'entrées, de sorties et de code sont envoyées à travers la frontière. Le mieux qui puisse être émulé serait de faire quelque chose comme ça.
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);
...
''')
Il existe une certaine prise en charge dans JMP 19 pour interagir à partir de Python en étant capable d'obtenir/définir directement l'espace de noms global et ici les variables d'espace de noms directement à partir de Python, donc le Python Get() ci-dessus peut ne pas être strictement nécessaire dans JMP 19 et au-delà.
C’est un bon sujet à examiner, une meilleure capacité à exposer les fonctions JSL à l’environnement Python.
Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?Je suis d'accord avec @Craige_Hales sur la nécessité de tester chaque chemin. Lorsque des données volumineuses et des performances élevées entrent en jeu, rien ne remplace les tests dans votre environnement. Il n'existe pas de véritable raccourci pour dire que l'un est meilleur que l'autre sans effectuer de tests et de mesures. Même dans ce cas, les conseils et astuces de réglage des performances peuvent être spécifiques à chaque langage.
Il existe quelques principes généraux.
- Ne manipulez pas, ne déplacez pas, ne dupliquez pas les données plus que strictement nécessaire.
- Faites attention à O( ) de votre code, déroulez les boucles lorsque cela est possible, évitez les algorithmes n^2 ou pires.
- Réduisez l'accès au système de fichiers dans les zones critiques et assurez-vous que la mémoire ne dépasse pas la mémoire physique, sinon vous devrez effectuer un échange vers le disque.
- RAM physique vs SSD local vs disque dur vs lecteur réseau.
Dans la quête de performances absolues, vous devrez peut-être tester des sections de votre code pour voir lequel est le plus rapide, JSL ou Python. Par exemple, il peut être plus rapide de traiter les données sous forme de tableau numpy ou de dataframe pandas et de les convertir en une table de données en une seule fois plutôt que de les ajouter à une grande table de données en JSL (je n'ai pas testé cela, donc je ne sais pas, je fais juste un exemple.) Vous devez tester chaque composant majeur du pipeline lorsque les performances sont critiques.
Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?Merci !! Je les ai tous téléchargés et je vais les fouiller !!!
Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?Paul, merci beaucoup. Vos commentaires me disent que je suis quelque part dans la bonne catégorie. Je suis tellement reconnaissant de tout ce que vous faites pour les JMPing Pythons (ou les JMpers Pythoniques) là-bas. Je suis sûr qu'il y a beaucoup de gros projets JSL hérités bien établis dans cette situation où ils ne veulent pas être réécrits, mais ont besoin d'ajouter des mécanismes pour "décompresser leur braguette" en quelque sorte (pardonnez-moi) pour que les gens de Python puissent jeter un œil à l'intérieur.
Avec gratitude, John
Re : Dans cette situation, dois-je utiliser Python ou JSL pour le script de contrôle principal ?Merci à tous les experts pour vos réponses.
J'ai effectué une comparaison entre Python et JSL pour un calcul d'indicateur complexe.
La consommation de temps diffère de près de 10 fois.
J'ai exécuté la matrice complète en utilisant JSL.
Comme je ne connais pas Python, je ne pouvais que demander à diverses IA de l'implémenter en Python selon cette logique JSL.
Le résultat montre que la modification par grok3 est la meilleure.
