Portál AbcLinuxu, 1. listopadu 2025 21:08
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.