2013-09-24 2 views
3

나는 dbus를 듣는 동안 처음으로 gobject에 직면했다. 이 코드 조각이 주 루프를 설정하는 방법을 가르쳐주었습니다.파이썬에서 gobject 메인 루프를 제대로 종료하는 방법은 무엇입니까?

How can I listen for 'usb device inserted' events in Linux, in Python?

는하지만 제가 지금 필요한 것은 그것을 막을 수있는 방법입니다. 메인 루프는 종료 기능을 가지고 있으며 키보드 인터럽트 예외에서 호출하는 방법을 알고 있습니다. 하지만이 메인 루프를 스레드에 넣으면 어떻게 멈추게할까요?

이상 일반 :이 루프를 독립적으로 실행하는 적절한 방법은 무엇입니까? 또한 주 기능이 종료 될 때 종료 할 수 있습니까?

감사합니다.

답변

1

파이썬에 관해서는 아무것도 모르지만 일반적으로 loop 변수를 호출 스레드 (주 기능)에 전달한 다음 완료하면 loop.quit() 변수를 전달해야합니다.

  1. 쉬운 방법 :

    은 기본적으로 두 가지 옵션이 루프 변수를 전달하려면 분기 전에 gobject.MainLoop()loop를 초기화, 그래서 모두 스레드에서 사용할 수 있습니다;
  2. 어려운 방법 : 루프 스레드에서 초기화 한 후 주 스레드로 값을 전달하십시오. 스레드간에 데이터를 전달

(C)에서 예는 GCond documentation (push_data()pop_data())에 의해 도시된다.

관련 문제