abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:55 | Komunita

    Ubuntu 26.04 LTS bude (𝕏) Resolute Raccoon (rezolutní mýval).

    Ladislav Hagara | Komentářů: 0
    včera 21:00 | Nová verze

    Netwide Assembler (NASM) byl vydán v nové major verzi 3.00. Přehled novinek v poznámkách k vydání v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 20:11 | Komunita

    Linuxová distribuce Frugalware (Wikipedie) ke konci roku 2025 oficiálně končí.

    Ladislav Hagara | Komentářů: 0
    včera 17:22 | Nová verze

    Byla vydána nová verze 3.0.6 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP bude brzy k dispozici také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    včera 16:11 | IT novinky

    Americký výrobce čipů AMD uzavřel s americkou společností OpenAI smlouvu na několikaleté dodávky vyspělých mikročipů pro umělou inteligenci (AI). Součástí dohody je i předkupní právo OpenAI na přibližně desetiprocentní podíl v AMD.

    Ladislav Hagara | Komentářů: 1
    včera 12:22 | Nová verze Ladislav Hagara | Komentářů: 0
    5.10. 20:00 | Komunita

    Byly zpracovány a na YouTube zveřejněny videozáznamy z konference LinuxDays 2025.

    Ladislav Hagara | Komentářů: 0
    4.10. 15:22 | IT novinky

    Na konferenci LinuxDays 2025 byl oficiálně představen nový router Turris Omnia NG.

    Ladislav Hagara | Komentářů: 35
    4.10. 05:22 | Komunita

    Přímý přenos (YouTube) z konference LinuxDays 2025, jež probíhá tento víkend v Praze v prostorách FIT ČVUT. Na programu je spousta zajímavých přednášek.

    Ladislav Hagara | Komentářů: 17
    3.10. 22:44 | IT novinky

    V únoru loňského roku Úřad pro ochranu osobních údajů pravomocně uložil společnosti Avast Software pokutu 351 mil. Kč za porušení GDPR. Městský soud v Praze tuto pokutu na úterním jednání zrušil. Potvrdil ale, že společnost Avast porušila zákon, když skrze svůj zdarma dostupný antivirový program sledovala, které weby jeho uživatelé navštěvují, a tyto informace předávala dceřiné společnosti Jumpshot. Úřad pro ochranu osobních údajů

    … více »
    Ladislav Hagara | Komentářů: 11
    Jaké řešení používáte k vývoji / práci?
     (39%)
     (45%)
     (15%)
     (17%)
     (21%)
     (15%)
     (17%)
     (16%)
     (15%)
    Celkem 183 hlasů
     Komentářů: 12, poslední 4.10. 20:35
    Rozcestník

    Dotaz: PyQt4 + vlakna = zamrzanie

    andree avatar 28.10.2008 11:28 andree | skóre: 39 | blog: andreeeeelog
    PyQt4 + vlakna = zamrzanie
    Přečteno: 317×
    hi all,

    mam tu taky problem, s ktorym si vobec neviem dat rady...

    O co ide - mam aplikaciu (QuantumGIS), ktory ma nejake to python rozhranie, ktorym sa daju vyrabat pluginy.. ten plugin do okna aplikacie vrazi QDockWidget a vsetko funguje fajn... az do okamihu, ked sa pokusim spustit vlakno:
    class Gatherer(QThread):
    	def __init__(self, parentThread,  controller):
    		QThread.__init__(self,  QThread.currentThread())
    		self.controller=controller
    		
    	def run(self):
    		self.stopMe=0
    		while (self.stopMe==0):
    			print '.'
    			time.sleep(1)
    			print 'xx'
    	
    	def stop(self):
    		self.stopMe=1
    		QThread.wait(self)
    
    jedine co to vypise v konzoli je jedna '.', a potom to 'zamrzne'. 'xx' to vypise az potom, ako sa nieco udeje v tom dockwidgete (napr. sa stlaci nejake tlacidlo - predpokladam ze hocikedy, ked sa vola 'handler' nejakeho signalu).

    Neviete niekto, kde by mohol byt problem? Ked ten thread spustim priamo:
    	g=Gatherer()
    	g.run()
    	time.sleep(10)
    	g.stop()
    
    tak to samozrejme funguje...

    Najzaujimavejsie na tom vsetkom je, ze toto:

    http://trac.reprojected.com/qgisplugins/browser/trunk/threading_demo funguje uplne spolahlivo - pritom jediny rozdiel je, ze tam to vlakno este vytvara nejake signaly a ze miesto dockwidgetu sa tam zobrazuje okno...

    Jedina moznost co ma napada je, ze to vlakno nebezi preto, ze by, pokial nie su spravy od Qt, nebezal ten python interpreter (co by ale bolo divne, ked clovek od neho chcel vlakno...).

    any ideas?

    Odpovědi

    andree avatar 28.10.2008 11:32 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: PyQt4 + vlakna = zamrzanie
    este poznamka - ked tam ten time.sleep(1) zrusim, tak to sice vypisuje '. \n xx \n' - akurat ze pre zmenu vobec nereaguje UI toho quantum gisu... ja to nechapem :-/
    andree avatar 28.10.2008 15:17 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: PyQt4 + vlakna = zamrzanie
    ok, mozno to nebude nik vediet aj tak - kazdopadne sa mi to podarilo obijst pridanim takehoto kodu:
    	self.timer = QTimer()
    	QObject.connect(self.timer, SIGNAL("timeout()"), self.runStatus)
    	self.timer.start(10)
    
    ...
    
    def runStatus(self):
    	self.thread.msleep(1)
    	return
    
    ak by mi niekto bol schopny logicky objasnit, preco je toto nutne, aby vlakna fungovali (a preco to nie je v ziadnej dokumentacii), bol by som velmi vdacny :-)
    Fuky avatar 28.10.2008 16:01 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: PyQt4 + vlakna = zamrzanie
    Zkoušel jsi místo time.sleep() použít přímo metodu sleep() z třídy QThread?
    andree avatar 28.10.2008 21:41 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: PyQt4 + vlakna = zamrzanie
    yop, je fakt ze toto je trosku premiesany kod - kazdopadne hociaka kombinacia (aj nekombinacia :)) QThread+threading robi to iste...
    msk avatar 29.10.2008 15:42 msk | skóre: 27 | blog: msk
    Rozbalit Rozbalit vše Re: PyQt4 + vlakna = zamrzanie
    Kto a ako vola ten thread? Nikde to volanie nevidim...
    andree avatar 30.10.2008 11:26 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: PyQt4 + vlakna = zamrzanie
    aha... no spusta sa to zo signal handleru - vola sa to uplne standardne: t=Gatherer(); t.start()...

    sranda je, ze nasledujuci workaround to "zfunkcni", a ja vobec netusim preco by mal (ako je mi jasne co to robi, a preco by to mohlo fungovat - ale nechapem, preco je nutne toto spravit, aby fungovali vlakna.. by clovek povedal, ze vlakna su od toho, ze funguju same - nie ze si clovek musi preempciu dokodit sam :)))
    def someSignalHandler(self):
    	self.t=Gatherer()
    	self.t.start()
    
    	self.timer = QTimer()
    	QObject.connect(self.timer, SIGNAL("timeout()"), self.runStatus)
    	self.timer.start(10)
    
    def runStatus(self):
    	self.gatherer.msleep(1)
    	return
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.