[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