Portál AbcLinuxu, 7. května 2025 22:02
Dobry den.
Spotreba pameti tohoto programku s casem roste:
#!/usr/bin/env python3 import gi,signal gi.require_version('Gtk', '3.0') gi.require_version('AppIndicator3', '0.1') from gi.repository import AppIndicator3, GLib, Gtk from xkbgroup import XKeyboard class IndicatorTestIcon: NAME = "" xkb = XKeyboard() def __init__( self ): self.indicator = AppIndicator3.Indicator.new( "xkb", self.getIconName(), AppIndicator3.IndicatorCategory.APPLICATION_STATUS ) self.indicator.set_status( AppIndicator3.IndicatorStatus.ACTIVE ) self.buildMenu() def main( self ): GLib.timeout_add(500, self.update ) Gtk.main() return True def update( self ): if self.xkb.group_symbol+self.xkb.group_variant != self.NAME: self.indicator.set_icon_full( self.getIconName(), "" ) self.NAME = self.xkb.group_symbol+self.xkb.group_variant return True def buildMenu( self ): menu = Gtk.Menu() for x in range(0, self.xkb.groups_count): if self.xkb.groups_variants[x] : name = self.xkb.groups_symbols[x]+"("+self.xkb.groups_variants[x]+")" else: name = self.xkb.groups_symbols[x] item = Gtk.MenuItem(name) item.connect('activate', self.ac, x) menu.append(item) del item self.indicator.set_menu( menu ) menu.show_all() del menu return True def ac(self, source, ic): self.buildMenu() self.xkb.group_num=ic return True def getIconName( self ): if self.xkb.group_variant != "" : return "/usr/local/sbin/kbdata/"+self.xkb.group_symbol+"("+self.xkb.group_variant+").xpm" return "/usr/local/sbin/kbdata/"+self.xkb.group_symbol+".xpm" signal.signal(signal.SIGINT, signal.SIG_DFL) if __name__ == "__main__": IndicatorTestIcon().main()
Mam to pusteno trikrat, prvni proces bezi 2 dny, druhu par sekund, treti par hodin:
<[user@localhost ~]$ ps -C python3 -o pid --no-headers| xargs -l1 pmap -x 14752 | grep total [user@localhost ~]$ total kB 894988 295364 252572 total kB 572488 43616 17300 total kB 582132 53288 26956 [user@localhost ~]$
Jak je mozne, ze se spotreba pameti tolik lisi, cim tomu zabranit?
Programek zobrazuje v tray aktualni rozlozeni klavesnice - jak to pripadne udelat lepe?
Dekuji.
marekŘešení dotazu:
Dekuji za odpoved.
po zkoumani jsem zjistil, ze spotreba pameti roste i kdyz to ocesam pouze na:
#!/usr/bin/env python3 from xkbgroup import XKeyboard import time while True: xkb = XKeyboard() time.sleep(0.1) del xkb
Takze chyba snad nalezena...
marek
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.