このような状況では、メインの制御スクリプトに Python と JSL のどちらを使用すればよいでしょうか?これで、JMP は Python とシームレスに接続できるようになり、JSL と Python は相互に呼び出すことができるようになりました。
私にはタスクがあります:
1. **データの受信と抽出 (py):** 毎分、Python コードを使用して、3 秒ごとに API からデータを受信します。受信したデータから構造化データをリアルタイムで抽出し、メモリ配列 A に格納します。すぐにデータを別のメモリ配列 B に抽出します。次に、メモリ配列 A をすぐにクリアして、次のデータ バッチの準備をします (この処理時間は十分であり、ブロックは発生しません)。1 分間の終わりに、Python コードを使用して新しい JMP テーブル (テーブル A と呼びます) を作成し、メモリ配列 B からの構造化データをこの JMP テーブルに書き込みます。最後に、メモリ配列 B をクリアします。
2. **連結と銘柄選択 (JSL):** JSL を使用して、新しく作成した JMP テーブル A のデータを既存の JMP テーブル B に追加します。結合されたテーブル B で、JSL のテクニカル指標を使用して銘柄選択計算を実行します。次に、JMP テーブル A を閉じます。
このプロセスは継続的に繰り返されます。
安定した動作とシステム リソースの消費量の削減に重点を置いた場合、この状況では次の 2 つのアプローチのどちらが適していますか?
A. 単一の包括的な Python スクリプト内で、タイマーを使用して、データの受信/抽出 (py) 部分と連結/ストック選択 (JSL) 部分を継続的に実行します。
B. 単一の包括的な JSL スクリプト内で、タイマーを使用して、データの受信/抽出 (py) 部分と連結/ストック選択 (JSL) 部分を継続的に実行します。
ありがとう!
自動化とスクリプトウィンドウズRe: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?DeepSeek R1の

Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?グロク3

Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?2 つの別々のプログラムを作成し、両方を実行したままにします。RunProgram 経由で JMP を使用して Python を起動することも、Python が使用するものを介して Python を起動することもできます。ただし、.py ファイルと .jsl ファイルから開始し、デバッグされるまで手動で実行します。
Python コードで、完了した作業をタイムスタンプ ファイル名のディレクトリに配置するようにします。作業が積み重なっている場合 (他のワーカーが失敗したため) にアラームを鳴らすようにします。
JSL コードを 10 秒ごとに起動して、filesInDirectory を使用して新しい作業を探すようにします。作業が見つかってから 2 分以上経過した場合 (他のワーカーが失敗したため) にアラームを鳴らすようにします。
Python と JMP の両方のケースでは、プログラムは永久にループするように設計されています。プログラムを再起動し続けるコントローラーを作成しないでください。すべての通信はファイル システムを介して行われ、ファイルの作成と削除が行われます。
ファイル ライターとファイル リーダーの間で競合が発生する可能性があります。JMP が不完全な出力を読み取っている場合は、2 つのファイルが使用可能になるまで待ってから、最後から 2 番目のファイルで作業します。もちろん、1 分遅れになります。
Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?同じ一般的なトピックについて(おそらく怠惰な質問ですが)質問を追加してもよろしいでしょうか?
私は JSL で書かれた大規模なコードベース (10,000 行以上) を持っています。このコードベースでは、毎月、さまざまな形式 (xml、csv、xls など) のファイル 12 個で構成される、組織の RDBMS から取得する大規模な自動データ ダウンロードに対して、さまざまな連続的な前処理、変換、解析、再編成が行われます。
私は徐々に引退に向かっており、自分のコードと、その結果得られた非常に貴重なクリーンで便利な JMP データベースが忘れ去られるのは望んでいません。しかし、プロジェクトを引き継ぐのに最適な同僚は全員 Python プログラマーであり、JSL を学ぶことにあまり熱心ではありません。
私のアイデアは、JSL コードを適度なサイズ (コード行数約 500 行) の論理モジュールに分割し、各モジュールが明確に定義された入力と出力を使用して、プロセス全体の中で明確に定義されたステップを実行するというものです。次に、各モジュールを何らかの Python ラッパーにラップして、同僚が JSL の細かい詳細を学習しなくても済むようにします。また、JSL に問題が発生したときに基本的なトラブルシューティング情報を抽出できるように、JSL に Python フックをいくつか含めることもできます。
私の質問は次のとおりです。このサイトで、私 (完全な Python 初心者) が、どのようなフックやラッパーが探しているものであるかを把握するのに役立つ最高のビデオ、ホワイト ペーパー、マニュアルの章、ディスカッション スレッド、書籍、セミナーなどは何ですか。また、この方法で既存の JSL コードを制御および「スニッフィング」する Python コードの例も教えてください。
おそらく答えられない質問ですが、どんな提案でも歓迎します。
Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?ポール・ネルソン
Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?これらはいくつかのアイデアを与えるかもしれない
おそらくこれもそうですが、先に述べたものから始めましょう
Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?JSL を、モジュール化された明確に定義され文書化されたコンポーネントに分割することが、実行できる最大かつ最善のことです。
Python スクリプトでは jmp.run_jsl('' スクリプト コード ''') を実行できるため、ルーチンが JSL 関数になっている場合は、Python から呼び出すことができます。さらに深く学びたい場合は、Python を学習して、Python プログラマーが期待する動作をする Python ベースのオブジェクトを作成する必要があります。ルーチンを十分に小さくし、十分に文書化できれば、アルゴリズムが十分に文書化されている限り、JSL から Python への変換はルーチンの仕事になります。
また、JMP の Python サポートはリリースごとに進化しているため、18 で必要な回避策は JMP 19 や 20 ではネイティブに処理される可能性があります。JMP 18 および 19 の現在の焦点は、データの相互運用性です。入力、出力、およびコードのリストが境界を越えて送信される JSL 関数 Python Execute( ) に相当する Python はまだありません。エミュレートできる最良の方法は、次のようなことです。
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);
...
''')
19 では、グローバル名前空間と here 名前空間変数を Python から直接取得/設定できるため、Python との相互運用がサポートされています。そのため、上記の Python Get() は、JMP 19 以降では厳密には必要ない可能性があります。
これは私たちにとって検討すべき良いトピックであり、JSL 関数を Python 環境に公開する能力が向上します。
Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?各パスをテストする必要があるという点では、 クレイグ・ヘイルズに同意します。大規模なデータと高パフォーマンスが関係する場合、自分の環境でテストする以外に方法はありません。テストと測定を行わずに、どちらかが他方より優れていると判断する近道はありません。その場合でも、パフォーマンス チューニングのヒントやコツは言語ごとに異なります。
いくつかの一般的な原則があります。
- 必要以上にデータを処理、移動、複製しないでください。
- コードの O( ) に注意し、可能な場合はループを展開して、n^2 またはそれより悪いアルゴリズムを回避します。
- 重要な領域でのファイルシステム アクセスを最小限に抑え、メモリが物理メモリを超えて増加しないようにします。そうしないと、ディスクにスワップすることになります。
- 物理 RAM 対 ローカル SSD 対 HDD 対 ネットワーク ドライブ。
絶対的なパフォーマンスを追求するには、コードのセクションをテストして、JSL と Python のどちらが高速に動作するか確認する必要があります。たとえば、データを numpy 配列または pandas データフレームとして処理し、一度にデータ テーブルに変換する方が、JSL で大きなデータ テーブルに追加するよりも高速である可能性があります (これはテストしていないのでわかりませんが、例として挙げているだけです)。パフォーマンスが重要な場合は、パイプラインの主要コンポーネントをそれぞれテストする必要があります。
Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?ありがとうございます!!全部ダウンロードして掘り下げてみます!!!
Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?ポール、本当にありがとう。あなたのコメントから、私の考えは正しいとわかりました。あなたが JMP する Python (または Python 的な JM ユーザー) のために行っていることすべてに、私はとても感謝しています。書き直したくないが、Python ユーザーが中を覗けるように (お許しください) いわば「ファスナーを開ける」メカニズムを追加する必要がある、大規模で確立されたレガシー JSL プロジェクトが世の中にたくさんあることは間違いありません。
感謝を込めて、ジョン
Re: このような状況では、メインの制御スクリプトには Python と JSL のどちらを使用すればよいでしょうか?回答してくださった専門家の皆様、ありがとうございました。
複雑な指標計算について、Python と JSL の比較を実施しました。
消費時間は10倍近くも異なります。
JSL を使用するときに完全なマトリックスを実行しました。
私は Python に詳しくないので、この JSL ロジックに従って、さまざまな AI に Python で実装するように依頼することしかできませんでした。
結果は、grok3 による修正が最適であることを示しています。
