🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
4 messages
4 total messages Started by Daniel Mróz Sat, 19 Sep 2009 19:23
Re: Thread
#26839
Author: Daniel Mróz
Date: Sat, 19 Sep 2009 19:23
61 lines
2345 bytes
On 19.09.2009, Marcin Łabuz <labuzm@gmail.com> wrote:
> import time
> from threading import Thread
>
> class Printer:
>
>     def __init__(self):
>
>         self.Watek().run()
>
>         for x in range(1,11):
>             print "%s. Watek 1" % x
>             time.sleep(1)
>
>     class Watek(Thread):
>
>         def __init__(self):
>             Thread.__init__(self)
>             self.setDaemon(True)
>
>         def run(self):
>             for x in range (1,11):
>                 print "%s. Watak 2" % x
>                 time.sleep(1)
>
> if __name__ == "__main__":
>     Printer()
Straszny bałagan masz w tym kodzie. Klasa w klasie, złe wywołanie wątku,
brak kontroli, dziwne pętle, które niewiadomo co robią, old-style classes,
mieszanie typów w interpolacji łańcuchów, ...


class MyThread(threading.Thread):
    def run(self):
	...


class Printer(object):
    def __init__(self):
	self.my_thread = MyThread()
	self.my_thread.start()

	for i in xrange(11):
	    print 'Bla bla bla %d' % (i,)

	self.my_thread.join()	# czekamy aż wątek się zakończy



Pamiętaj, że rodzic _ZAWSZE_ musi czekać aż wątek się zakończy. Jeśli
parent umrze przed dzieciakiem, będziesz miał zombie w systemie lub deadlock.


Pozdrawiam
Beorn

-- 
Daniel 'Beorn' Mróz <beorn@alpha.pl>    http://127.0.0.1/beorn
[GIT d s:- a-@ C++++ UL++++$ P+ L++++ E--- W+ N+++ o? K- w---]
[O- M- V!  PS+ PE++ Y+ PGP++ t- 5  X R !tv b+ DI D++ G++ e h*]
[                          r++  y+                           ]
Re: Thread
#26841
Author: Bart Ogryczak
Date: Mon, 21 Sep 2009 14:00
18 lines
1960 bytes
On Sep 19, 9:23 pm, Daniel Mróz <be...@alpha.pl> wrote:

> Pamiętaj, że rodzic _ZAWSZE_ musi czekać aż wątek się zakończy. Jeśli
> parent umrze przed dzieciakiem, będziesz miał zombie w systemie

Po pierwsze zombie to tylko wpis w tabeli procesów. Nic więcej. Czyli
jedyny zasób jaki zużywa, to numer PID. Służy *wyłącznie* do tego,
żeby rodzic mógł wykonać wait().

Po drugie jeśli procesowi umrze rodzic, to jest przygarnianay przez
dziadka, jeśli tego nie ma, to przez Init (proces z PID 1). Init
odpali od razu wait() dla takiego zombiaka i zombie natychmiast
zniknie.

> lub deadlock.

??? Przecież w momencie śmierci wątku zasoby są automagicznie
zwalniane.
Re: Thread
#26840
Author: bartekplus
Date: Mon, 21 Sep 2009 18:37
11 lines
1711 bytes
On Sep 21, 4:00 pm, Bart Ogryczak <b.ogryc...@gmail.com> wrote:
> On Sep 19, 9:23 pm, Daniel Mróz <be...@alpha.pl> wrote:

> Po drugie jeśli procesowi umrze rodzic, to jest przygarnianay przez
> dziadka, jeśli tego nie ma, to przez Init (proces z PID 1). Init
> odpali od razu wait() dla takiego zombiaka i zombie natychmiast
> zniknie.

Tak, zniknie pod warunkiem ze wątek się zakończy sam z siebie. Moze on
czekac na wiadomosc ( sposobó komunikacji dowolny) od rodzica, a gdy
rodzica nie ma to ...
Re: Thread
#26842
Author: Bart Ogryczak
Date: Tue, 22 Sep 2009 15:35
15 lines
2011 bytes
On Sep 21, 8:37 pm, bartekplus <bartekp...@gmail.com> wrote:
> On Sep 21, 4:00 pm, Bart Ogryczak <b.ogryc...@gmail.com> wrote:
>
> > On Sep 19, 9:23 pm, Daniel Mróz <be...@alpha.pl> wrote:
> > Po drugie jeśli procesowi umrze rodzic, to jest przygarnianay przez
> > dziadka, jeśli tego nie ma, to przez Init (proces z PID 1). Init
> > odpali od razu wait() dla takiego zombiaka i zombie natychmiast
> > zniknie.
>
> Tak, zniknie pod warunkiem ze wątek się zakończy sam z siebie. Moze on
> czekac na wiadomosc ( sposobó komunikacji dowolny) od rodzica, a gdy
> rodzica nie ma to ...

... to znaczy, że program jest niepoprawny. Tyle i tylko tyle. Nie ma
to nic do tego w jakiej kolejności należy ubijać wątki.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads