나는 두 개의 프로그램을 파이썬으로 가지고있다. Prog1.py와 Prog2.py라고 부르 자. Prog1을 통해 외부 장치에서 실시간 데이터를 얻을 수 있습니다. 현재로서는 데이터를 가져올 때 화면에 인쇄합니다. 각 반복마다 획득 한 새로운 데이터 세트가 인쇄되는 while 루프가 실행됩니다. 이제 Prog2는 PyQtGraph를 사용하여 빌드 된 Python 프로그램으로, 모니터와 같이 실시간으로 데이터를 그릴 수 있습니다. 현재 Prog2는 (즉, 별도로 실행될 때) 이미 획득 한 데이터를 표시합니다. 이것은 움직이는 음모입니다. 따라서 Prog2.py에는 지정된 간격으로 타이머에 의해 반복적으로 호출되는 업데이트 함수가있어 그래프를 다음 데이터 요소로 업데이트 (오른쪽으로 이동)합니다. 제 목표는 Prog1과 Prog2를 연결하는 것입니다. Prog2가 실시간으로 수집 한 데이터를 Prog2로 파이프하여 Prog2가 실시간으로 데이터를 그릴 수 있도록하려는 것입니다.Python에서 이벤트 처리 프로그램 두 개 통합하기
Prog1과 Prog2는 자체 이벤트 루프 프로세스가있는 독립적 인 이벤트이므로이 이벤트를 연결하는 방법을 잘 모르겠습니다. 필자가 생각한 순진한 아이디어는 Prog1.py와 Prog2.py를 병렬로 실행하고 Prog1.py에게 파일에 데이터를 저장하도록 요청하고 Prog2.py에 읽어서 그래프를 그릴 것을 요청했습니다. 그러나 나는 이것으로 확신하지 못했습니다. 이것은 더러워 보입니다. 어떻게 든 Prog1.py 안에 Prog2.py 코드 전체를 실행하고 싶습니다. 이 작업을 수행 할 수있는 명확한 방법이 있습니까?
편집 - 코드
Prog1.py
/*
Code to get data from USB
*/
def main():
while 1:
data = get_data()
print data
main()
Prog2.py 아마, 그래프를 업데이트하고
당신은 아마 스레딩과 잘이 작업을 수행 할 수 있습니다. 한 스레드가 라이브 데이터에 대한 모든 과장을 수행하고 그래프를 수행하는 다른 스레드를 수행하게하십시오. 두 번째 스레드에 그래프를 업데이트 할 이벤트를 지정하고 첫 번째 스레드가 데이터 트리거를 잡아 이벤트를 트리거합니다. 만약 당신이 진술 한 것처럼 하나의 프로그램에서 그것을 원한다면 말입니다. https://docs.python.org/2/library/threading.html#event-objects – Bob
또한 자체 이벤트 루프가있는 라이브러리 (Live555)와 내 Qt GUI를 결합 할 수있었습니다. 기본 스레딩 규칙을 존중하는 한 스레드로 쉽게 달성 할 수 있습니다. –