나는 PyQt4의 QThread와 워커 스레드의 아이디어에 대해 가능한 한 많이 읽으려고 노력했습니다. 내 질문 대신에서의 실행 모두에 QThread 클래스를 건물입니다 def run(self):
에 의해 blahblah.start()
, 4 기능과 당신만을 호출 기능이 말을 가지고 개별 스레드 클래스를 만들 수있는 방법이 다음 닫기 명령이 실 직후 ?
서브 클래 싱 [아래 설명 참조]QThread
은 자주 사용되지만 일반적으로 권장 되지 않는 방법입니다 .
제 생각에는 이것은 pyqt에서 스레드를 사용하는 방법에 대한 좋은 예입니다. Worker와 Thread를 만들 수 있습니다. 여기서 Worker는 일반적인 유형의 클래스이고 QObject
Thread는 QThread
하위 클래스가 아닌 클래스입니다. 그런 다음 작업자를 위협으로 이동하고 시작합니다.
self.worker = WorkerObject()
self.worker_thread = QtCore.QThread()
self.worker.moveToThread(self.worker_thread)
self.worker_thread.start()
Worker 내에서 기본적으로 원하는 것은 무엇이든 할 수 있으며, 임의의 많은 메서드 등을 가질 수 있습니다.
명심해야 할 중요한 점은 Worker가 메인 루프에서 분리되어야한다는 것입니다. 따라서 메서드는 메인 루프에서 사용되는 어떤 것도 반환해서는 안되며 (아무것도 반환하지 않는 것이 좋습니다) 작업자의 결과는 신호와 슬롯을 사용하여 수집해야합니다.
self.button_start.clicked.connect(self.worker.startWork)
self.button_do_something_else.clicked.connect(self.worker.function2)
self.worker.signalStatus.connect(self.updateStatus)
또한 워커 내부에서 PyQt / GUI 객체를 사용하지 않도록하십시오. 이것은 또한 PyQt 자체를 통해 워커와 메인 루프 사이에 다리를 구축 할 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다