이런 상황에서 주요 제어 스크립트에 Python을 사용해야 할까요, 아니면 JSL을 사용해야 할까요?이제 JMP는 Python과 원활하게 연결될 수 있고, JSL과 Python은 서로를 호출할 수 있습니다.
내가 맡고 있는 일은 다음과 같습니다.
1. **데이터 수신 및 추출(py):** 매 분마다 Python 코드를 사용하여 3초마다 API에서 데이터를 수신합니다. 수신된 데이터에서 구조화된 데이터를 실시간으로 추출하여 메모리 배열 A에 저장합니다. 즉시 데이터를 다른 메모리 배열 B로 추출합니다. 그런 다음 메모리 배열 A를 즉시 지워 다음 데이터 배치를 준비합니다(이 처리 시간은 충분하며 차단을 일으키지 않습니다). 매 분마다 Python 코드를 사용하여 새 JMP 테이블(테이블 A라고 함)을 만들고 메모리 배열 B의 구조화된 데이터를 이 JMP 테이블에 씁니다. 마지막으로 메모리 배열 B를 지웁니다.
2. **연결 및 주식 선택(JSL):** JSL을 사용하여 새로 만든 JMP 테이블 A의 데이터를 기존 JMP 테이블 B에 추가합니다. 결합된 테이블 B에서 JSL의 기술적 지표를 사용하여 주식 선택 계산을 수행합니다. 그런 다음 JMP 테이블 A를 닫습니다.
이 과정은 계속해서 반복됩니다.
이 상황에서는 안정적인 운영과 시스템 리소스 소모 감소에 초점을 맞춘 다음 두 가지 접근 방식 중 어느 것이 더 낫겠습니까?
A. 단일의 포괄적인 Python 스크립트 내에서 타이머를 사용하여 데이터 수신/추출(py) 및 연결/재고 선택(JSL) 부분을 지속적으로 실행합니다.
B. 단일의 포괄적인 JSL 스크립트 내에서 타이머를 사용하여 데이터 수신/추출(py) 및 연결/재고 선택(JSL) 부분을 지속적으로 실행합니다.
감사해요!
자동화 및 스크립팅윈도우Re: 이런 상황에서는 주요 제어 스크립트에 Python을 써야 할까요, 아니면 JSL을 써야 할까요?DeepSeek R1의

Re: 이런 상황에서는 주요 제어 스크립트에 Python을 써야 할까요, 아니면 JSL을 써야 할까요?그록3

Re: 이런 상황에서는 주요 제어 스크립트에 Python을 써야 할까요, 아니면 JSL을 써야 할까요?두 개의 별도 프로그램을 작성하고 둘 다 실행 상태로 둡니다. JMP를 사용하여 RunProgram을 통해 Python을 시작하거나 Python을 사용하여 Python이 사용하는 것을 통해 JMP를 시작할 수 있습니다. 그러나 .py 및 .jsl 파일로 시작하여 디버깅될 때까지 수동으로 실행합니다.
파이썬 코드가 완료된 작업을 타임스탬프 파일 이름이 있는 디렉토리에 배치하도록 합니다. 작업이 쌓이면(다른 작업자가 실패했기 때문에) 경보를 울리도록 합니다.
JSL 코드가 10초마다 깨어나 filesInDirectory를 사용하여 새 작업을 찾도록 합니다. 작업을 찾은 지 2분 이상이 지났을 때 알람을 울리도록 합니다(다른 작업자가 실패했기 때문입니다).
Python과 JMP의 경우 모두 프로그램은 영원히 반복되도록 설계되었습니다. 계속 재시작하는 컨트롤러를 만들어서는 안 됩니다. 모든 통신은 파일 시스템을 통해 이루어지고 파일을 만들고 삭제합니다.
파일 작성자와 파일 판독기 사이에 경쟁이 있을 수 있습니다. JMP가 불완전한 출력을 읽고 있다면, 두 개의 파일이 사용 가능할 때까지 기다렸다가 마지막에서 두 번째 파일을 작업하세요. 물론 1분 정도 늦어질 겁니다.
Re: 이런 상황에서는 주요 제어 스크립트에 Python을 써야 할까요, 아니면 JSL을 써야 할까요?같은 일반 주제에 대한 (아마도 게으른 질문일 수도 있지만, 죄송합니다) 질문을 추가할 수 있을까요?
저는 JSL로 된 대규모 코드베이스(10,000줄 이상)를 가지고 있는데, 이는 제가 기관 RDBMS에서 매월 자동으로 다운로드하는 대용량의 데이터를 순차적으로 사전 처리, 변환, 구문 분석, 재구성하는 다양한 작업을 수행합니다. 다운로드할 때마다 다양한 형식(xml, csv, xls 등)의 파일 12개가 다운로드됩니다.
저는 점차 은퇴를 향해 나아가고 있으며, 제 코드와 매우 가치 있는 결과인 깨끗하고 유용한 JMP 데이터베이스가 잊혀지는 것을 원하지 않습니다. 그러나 프로젝트를 인수할 가장 좋은 동료들은 모두 Python 프로그래머이고 JSL을 배우는 데 열정을 느끼지 못합니다.
제 아이디어는 JSL 코드를 적당한 크기(약 500줄의 코드)의 논리적 모듈로 분할하는 것입니다. 각 모듈은 전체 프로세스에서 잘 정의된 단계를 수행하며, 명확하게 정의된 입력과 출력을 갖습니다. 그런 다음 각 모듈을 동료들이 작업할 수 있는 Python 래퍼로 래핑하여 JSL의 세세한 세부 사항을 배울 필요가 없도록 합니다. 또한 JSL에 Python 후크를 포함하여 JSL에 문제가 발생할 때 기본적인 문제 해결 정보를 추출할 수 있도록 할 수도 있습니다.
제 질문은 다음과 같습니다. 이 사이트에서 제가(완전한 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);
...
''')
JMP 19에서는 전역 네임스페이스와 here 네임스페이스 변수를 Python에서 직접 가져오거나 설정할 수 있는 기능을 통해 Python에서 상호 운용할 수 있는 일부 지원이 있으므로 위의 Python Get()은 JMP 19 이상에서 꼭 필요하지 않을 수 있습니다.
이건 우리가 살펴볼 만한 좋은 주제이고, JSL 함수를 Python 환경에 더 잘 노출할 수 있는 능력이죠.
Re: 이런 상황에서는 주요 제어 스크립트에 Python을 써야 할까요, 아니면 JSL을 써야 할까요?저는 @Craige_Hales가 각 경로를 테스트해야 한다는 데 동의합니다. 대용량 데이터와 고성능이 작용할 때 환경에서 테스트하는 것만큼 좋은 대체 수단은 없습니다. 테스트와 측정 없이 어느 것이 더 낫다고 말할 수 있는 실질적인 지름길은 없습니다. 그런 경우에도 성능 튜닝 팁과 요령은 각 언어에 따라 다를 수 있습니다.
몇 가지 일반적인 원칙이 있습니다.
- 엄격히 필요한 것 이상으로 데이터를 취급, 이동, 복제하지 마십시오.
- 코드의 O( )에 주의하고 가능한 경우 루프를 풀어서 n^2 이하의 알고리즘은 피하십시오.
- 중요한 영역에서 파일 시스템 액세스를 최소화하고 메모리가 실제 메모리를 넘어서지 않도록 해야 합니다. 그렇지 않으면 디스크로 스왑이 이루어집니다.
- 물리적 RAM 대 로컬 SSD 대 HDD 대 네트워크 드라이브.
절대적인 성능을 추구할 때 코드의 섹션을 테스트하여 JSL 또는 Python 중 어느 것이 더 빠른지 확인해야 할 수 있습니다. 예를 들어, numpy 배열 또는 pandas 데이터 프레임으로 데이터를 처리하고 한 번에 데이터 테이블로 변환하는 것이 JSL에서 큰 데이터 테이블에 추가하는 것보다 더 빠를 수 있습니다 (테스트하지 않았으므로 모르겠습니다. 그냥 예를 든 것뿐입니다.) 성능이 중요한 경우 파이프라인의 각 주요 구성 요소를 테스트해야 합니다.
Re: 이런 상황에서는 주요 제어 스크립트에 Python을 써야 할까요, 아니면 JSL을 써야 할까요?고맙습니다!! 전부 다운로드해서 파헤쳐 볼게요!!!
Re: 이런 상황에서는 주요 제어 스크립트에 Python을 써야 할까요, 아니면 JSL을 써야 할까요?폴, 정말 고맙습니다. 당신의 코멘트를 보면 제가 어딘가 올바른 범위에 있다는 걸 알 수 있습니다. 저는 JMPing Pythons(또는 Pythonic JMpers)를 위해 당신이 해준 모든 일에 정말 감사합니다. 저는 이런 상황에서 많은 크고 확립된 레거시 JSL 프로젝트가 다시 작성하고 싶지 않지만, Python 사람들이 내부를 들여다볼 수 있도록 "날개를 압축 해제"하는 메커니즘을 추가해야 한다고 확신합니다(저를 용서해 주세요).
고맙게도, 존
Re: 이런 상황에서는 주요 제어 스크립트에 Python을 써야 할까요, 아니면 JSL을 써야 할까요?답변해 주신 모든 전문가분들께 감사드립니다.
복잡한 지표 계산을 위해 Python과 JSL을 비교했습니다.
시간소모는 약 10배 차이가 납니다.
JSL을 사용하여 전체 매트릭스를 실행했습니다.
저는 Python에 익숙하지 않기 때문에 다양한 AI에게 이 JSL 논리에 따라 Python으로 구현해 달라고만 요청할 수 있었습니다.
결과는 grok3에 의한 수정이 가장 좋은 것으로 나타났습니다.
