在這種情況下,我應該使用 Python 還是 JSL 作為主要控制腳本?現在JMP可以和Python無縫對接,JSL和Python可以互相呼叫。
我有一個任務:
1.**接收並擷取資料(py):**每分鐘,每3秒使用Python程式碼從API接收一次資料。即時從接收到的數據中提取結構化數據,存入一個內存陣列A中。最後,用Python程式碼建立一個新的JMP表(我們稱為表A),並將記憶體數組B中的結構化資料寫入這個JMP表中。最後,清空記憶體陣列B。
2. **連線與選股(JSL):**使用 JSL 將新建立的 JMP 表 A 中的資料附加到現有的 JMP 表 B。
此過程不斷重複。
以下兩種方法哪一種比較適合這種情況,既注重穩定運行,又減少系統資源消耗?
A. 在單一總體 Python 腳本中,使用計時器連續執行資料接收/擷取 (py) 和連線/股票選擇 (JSL) 部分。
B. 在單一總體 JSL 腳本中,使用計時器連續執行資料接收/擷取 (py) 和連線/股票選擇 (JSL) 部分。
謝謝!
自動化和腳本視窗回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?DeepSeek R1 的

回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?grok3

回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?編寫兩個單獨的程式並使其同時運行。您可以使用 JMP 透過 RunProgram 啟動 Python,或使用 Python 透過 Python 使用的任何方式啟動 JMP。但是從.py 和.jsl 檔案開始並手動運行它們直到調試完成。
讓 Python 程式碼將完成的工作放置在具有時間戳記檔案名稱的目錄中。如果工作堆積如山(因為其他工人失敗了),就發出警報。
讓 JSL 程式碼每 10 秒喚醒一次,以使用 filesInDirectory 尋找新工作。如果距離發現任何工作已超過 2 分鐘,則發出警報(因為其他工作人員失敗了)。
在 Python 和 JMP 兩種情況下,程式都被設計為無限循環。您不應該製作一個不斷重新啟動它們的控制器。所有通訊都是透過檔案系統完成的,建立和刪除檔案。
文件寫入者和文件讀取者之間可能會發生競爭;如果 JMP 正在讀取不完整的輸出,只需等到有兩個可用檔案並處理倒數第二個檔案。那當然會晚一分鐘。
回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?我可以附加一個關於同一一般主題的問題(可能很懶,抱歉)嗎?
我有一個大型的 JSL 程式碼庫(超過 10,000 行),可以對從機構 RDBMS 獲得的大量自動每月資料下載進行各種順序預處理、轉換、解析和重新組織,每次下載的資料均包含十幾個不同格式(xml、csv、xls 等)的檔案。
我即將退休,我不想讓我的程式碼以及由此產生的非常有價值、乾淨、有用的 JMP 資料庫被遺忘。然而,接手專案的最佳同事都是 Python 程式設計師,對學習 JSL 並不十分熱衷。
我的想法是將我的 JSL 程式碼分解為適度大小的邏輯模組(比如說~500 行程式碼),每個模組在整個過程中執行明確定義的步驟,並具有明確定義的輸入和輸出。然後,我會將每個模組包裝到某種 Python 包裝器中,以便我的同事可以使用,避免必須學習 JSL 的細節。我還可能在 JSL 中包含一些 Python 鉤子,當 JSL 遇到問題時,這些鉤子可能允許它們提取基本的故障排除資訊。
我的問題是:這個網站上有哪些最好的影片、白皮書、手冊章節、討論貼文、書籍、研討會等可以幫助我(一個完全的 Python 新手)弄清楚我正在尋找哪些類型的鉤子和包裝器...並附帶以這種方式控制和「嗅探」現有 JSL 程式碼的 Python 程式碼範例。
這可能是無法回答的問題,但歡迎提出任何建議。
回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?@Paul_Nelson
回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?這些可能會給你一些想法
也許是這樣,但從前面提到的開始
回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?將 JSL 分解為模組化、定義明確且有文件記錄的元件是您可以做的最大也是最好的事情。
Python 腳本可以執行 jmp.run_jsl('' 腳本程式碼 '''),因此如果您的例程已製成 JSL 函數,則可以從 Python 呼叫它們。如果您想要更深入地了解,您需要學習 Python 來建立按照 Python 程式設計師期望的方式運行的基於 Python 的物件。如果你可以使你的例程足夠小並且有詳盡的文檔,那麼他們的工作就可以從 JSL 轉換為 Python,只要該演算法有詳盡的文檔。
此外,JMP 中的 Python 支援隨著每個版本的發布而不斷改進,因此 18 中所需的解決方法可以在 JMP 19 或 20 中本地處理。目前還沒有與 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 中有一些支援與 Python 進行互通的功能,即能夠直接從 Python 獲取/設定全域命名空間和命名空間變量,因此上述 Python Get() 在 JMP 19 及更高版本中可能不是必需的。
這對我們來說是一個很好的主題,可以更好地將 JSL 函數暴露給 Python 環境。
回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?我同意@Craige_Hales關於測試每條路徑的必要性。當大數據和高效能發揮作用時,在您的環境中進行測試是無可取代的。如果不進行測試和測量,就沒有真正的捷徑可以說一個比另一個更好。即使如此,效能調整技巧和竅門也可能針對每種語言而有所不同。
有一些一般原則。
- 除非絕對必要,請勿處理、移動或複製資料。
- 注意程式碼的 O(),盡可能展開循環,避免 n^2 或更差的演算法。
- 盡量減少關鍵區域的檔案系統訪問,並確保內存不會超出物理內存,否則您將交換到磁碟。
- 實體 RAM 與本地 SSD 與 HDD 與網路驅動器。
為了追求絕對的效能,您可能需要測試程式碼的各個部分,以查看 JSL 還是 Python 哪個運行速度更快。例如,將資料作為 numpy 數組或 pandas 資料框進行處理並一次轉換為資料表可能比在 JSL 中附加到大型資料表更快(我沒有測試過這個,所以我不知道,我只是舉個例子。)當效能至關重要時,您需要測試管道的每個主要元件。
回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?謝謝你!我已經下載了所有內容並深入研究!
回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?保羅,非常感謝。您的評論讓我知道我的判斷是正確的。我很感激你們為 JMPing Pythons (或 Pythonic JMpers) 所做的一切。我確信有很多大型的、成熟的遺留 JSL 專案都處於這種境地:它們不想被重寫,但需要添加一些機制來“解壓縮”,以便 (請原諒) Python 開發人員可以查看內部內容。
非常感謝,約翰
回覆:在這種情況下,我應該使用 Python 還是 JSL 作為主控制腳本?謝謝各位專家的解答。
我對一個複雜指標的計算,進行了Python和JSL的比較。
耗時相差近10倍。
使用 JSL 時我運行了完整矩陣。
由於我對Python不太熟悉,所以只能按照這個JSL邏輯,讓各種AI用Python來實現。
結果表明,grok3修改效果最好。
