2014-06-05 8 views
0

전체, 내 GUI에서 다중 처리 기능을 사용하고 있습니다. 하지만 풀은 여러 GUI를 시작합니다. 나는 코드에 if __name__ == '__main__':을 추가한다고 읽었습니다. 그러나이 트릭이 제 경우에는 작동하는지,이 코드를 어디에 삽입해야하는지는 알지 못합니다. run_func() 함수는 GUI의 버튼으로 시작됩니다. 어떻게이 여러 시작을 차단할 수 있습니까?파이썬 다중 처리 풀 시작 다중 GUI

두 번째 질문이 있습니다. exec 끝에서 설정을 가져 오기 위해 어떻게해야합니까?

고맙습니다.

@pyqtSlot() 
    def run_func(): 
     run=""" 
     import os 
     import sys 
     from setup import * 
     print('toto') 
     print('titi') 
     """ 
     from multiprocessing import Pool 
     pool = Pool(processes=4)   
     asyncResult = pool.apply_async(exec(run),{},{}),range(1) 
+0

은 당신의 GUI는 setup.py에 출시되어 있습니까? 그것은'if __name__ == "__main __":'에 의해 보호되지 않습니다. 또한 정규 함수를 만들고 그것에 대해'apply_async'를 호출하는 것이 어떻습니까? 'exec'를 사용하는 것은 올바른 방법이 아닙니다. – dano

+0

감사합니다. 내 GUI는 setup.py에서 시작되지 않습니다. 내 QMainWindow를 시작하는 QApplication을 시작하는 Main이 있습니다. 그런 다음 내 QMainWindow는 QAction.I에 의해 run_func()를 시작하여 직접 apply_async에 함수를 선언 할 수 있지만 여러 시작을 해결하지는 못합니다. – user3393374

답변

0

질문에 대한 많은 내용을 제공하지 않습니다. 어쨌든 run 문자열에서 from setup import * 부분을 제거한 테스트를 만들었습니다. 모든 것이 잘 돌아가고, 따라서 PyQT 문제가 아니며, 어느 시점에서 GUI를 실행하는 모듈/함수를 다시 실행하는 것과 비슷합니다. 첫 번째 질문에 대한

:

나는 당신이 디버거를 사용하고 당신이 당신의 GUI를 호출 figureout에 대한 호출 스택을 사용할 수 있으며, GUI가 시작됩니다 일부 중단 점을 설정하는 것이 좋습니다. 그런 식으로 '메인'코드 블록이 어디로 가고, 실제로 필요한지 알 수 있습니다.

import pdb; pdb.set_trace() 

적 중단 점을 설정하려는 yuo :의 코드 중단 점과 디버거를 사용 PDB로

은 (는 멀티 프로세스에서 실행중인 기억) 라인을 넣어. 두 번째 질문에 대한

:

참조, How do I unload (reload) a Python module?

+0

답변 해 주셔서 감사합니다. 나는 많은 문제를 발견하고 멀티 프로세싱은 내가 찾고있는 것이 아니라고 생각한다. GUI 외부에서 스크립트를 실행하는 방법을 찾고 있습니다. 컨테이너 같은 스크립트를 실행하고 싶습니다. – user3393374

+0

다른 질문을 게시하면 도움이 될 것입니다. –

+0

고맙습니다. 게시했습니다. [link] (http://stackoverflow.com/questions/24180766/run-python-script-in-a-gui?noredirect=1#comment37336844_24180766) – user3393374

관련 문제