[python] [VYRESENO] gobject + threading
Filip Štědronský
regnarg na seznam.cz
Neděle Červen 29 09:37:02 CEST 2008
On So, čen 28, 2008 at 10:51:51 +0200, slush wrote:
> Vytvarim v pythonu DBus service, ktera se bude spoustet pomoci DBus
> autostart. Jedna se o mechanismus, kdy se python skript zavola ve chvili,
> kdy jiny proces vola sluzbu, kterou dany skript obhospodaruje. Bohuzel (lec
> zcela pochopitelne) zustane po vyrizeni sluzby skript viset v pameti.
> Nenasel jsem standardni DBusovy mechanismus, kterym by slo sluzbu ukoncit,
> pokud neni nejaky cas volana, proto jsem zkusil poresit toto vlastnimi
> silami.
Zdravím
Toto je škoda řešit pomocí vláken, nemyslíte ? Když se
jedná o krátkodobou periodickou aktivitu, vlákno bude
stejně většinu času spát, a přidáte tím zbyteční overhead.
Osobně se doporučuji podívat na funkci gobject.timeout_add,
která umožňuje periodicky volat určitou funkci:
import gobject
def fx():
#nějaký kód
return True #zavolat znovu ?
gobject.timeout_add(1000, fx)
V tomhle případě asi nebude vadit, že se na chvíli přeruší
mainloop po dobu kontroly. A ušetříte si patálie s vlákny,
o jejich ukončování nemluvě. Z hlavního vlákna nebude žádný
problém mainloop ukončit.
--
regnarg --- http://rg.pretel.cz -- JID: regnarg na jabber.cz
V péči o štěstí druhých nacházíme své vlastní. --Platón
Přátelství může trvat jedině mezi dobrými lidmi. --Cicero
Další informace o konferenci Python