PYGTK에서 PYGI로 : gtk.timeout_add 해당


9

PYGI를 사용하도록 일부 Python 코드를 변환했지만이 줄을 변환하는 방법을 알 수 없습니다.

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

분명히 PYGTK와 PYGI의 차이점을 실제로 알지 못하므로 새 코드는

from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator

https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Python_version에 표시된대로

변환하려는 전체 코드는 여기 http://pastebin.com/raw.php?i=aUtASRpy입니다.

에 해당하는 것은 무엇입니까

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

PYGI에서?

또한 PYGI가 단일 지표를 만드는 가장 현대적인 방법이라고 가정합니다.

또한 표시기에 상태를 알려주는 것보다는 어떤 상태를 확인하는 것이 가장 좋다고 가정합니다 (푸시 vs 풀). 파이썬 프로그램이 매초 무언가를 검사하는 것이 괜찮습니까?

감사!

답변:


1

질문 당 하나의 질문을하는 것이 좋습니다.

파이썬의 표준 라이브러리에는 필요한 것을 정확하게 수행 threading하는 Timer클래스 가있는 모듈이 있습니다 . 문서 .

푸시 대 풀과 관련하여-초당 발생하는 일 (풀)이 있는지 확인하는 대신 무언가가 발생할 때 (푸시) 응용 프로그램에서 알림을받는 것이 확실히 좋습니다. . "-매 초마다 동일한 반복 검사를 수행하는 대신 앱이 알림을 받기 전까지는 잠자기 기능을 수행 할 수 있기 때문입니다. 그러나 일부 유형의 활동의 경우 알림을 받기가 까다로울 수 있으므로 응용 프로그램의 특성에 따라 다릅니다. 너무 자주 점검하는 것은 배터리 수명 및 기타 물건에 좋지 않습니다.


감사합니다. 이것은 stackoverflow.com/questions/9812344/의 큰 도움 으로이 pastebin.com/raw.php?i=0jLxZ994 를 해킹 하게합니다. 나는 "설문 조사"의 대다수가 아무것도 바뀌지 않았 음을 발견 할 것이지만, 그것은 또 다른 시간이다. 감사!
onBootQuestioner

19

Gtk 방식이 답변에 있는지 확인하십시오.

동등한

gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork)

gobject 내부 검사 (PyGI)는 다음과 같습니다.

from gi.repository import GLib
GLib.timeout_add(PING_FREQUENCY * 1000, self.doWork)

그러나 x 초마다 정기적으로 무언가를 확인할 때는

GLib.timeout_add_seconds(PING_FREQUENCY, self.doWork)

이를 통해 Glib은 타이머를 그룹화하여 전력을 절약 할 수 있으며 이는 모바일 장치에 중요합니다. 로부터 문서 :

동시에 실행되도록 타이머를 그룹화하면 더 많은 전력과 CPU 효율적인 동작이 발생하므로 타이머가 몇 초 안에 있고 지금부터 정확히 1 초만 첫 번째 타이머가 필요하지 않은 경우 glib.timeout_add_seconds ( )가 glib.timeout_add ()보다 선호됩니다.


4
스레딩을 사용하는 것보다 낫습니다. 특히 스레딩은 수행중인 작업을 모르는 경우 이상한 버그와 잠금을 유발할 수 있습니다.
Timo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.