Thread View: pl.comp.lang.python
4 messages
4 total messages
Started by Daniel Mróz
Sat, 19 Sep 2009 19:23
Re: Thread
Author: Daniel Mróz
Date: Sat, 19 Sep 2009 19:23
Date: Sat, 19 Sep 2009 19:23
61 lines
2345 bytes
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
Author: Bart Ogryczak
Date: Mon, 21 Sep 2009 14:00
Date: Mon, 21 Sep 2009 14:00
18 lines
1960 bytes
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
Author: bartekplus
Date: Mon, 21 Sep 2009 18:37
Date: Mon, 21 Sep 2009 18:37
11 lines
1711 bytes
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
Author: Bart Ogryczak
Date: Tue, 22 Sep 2009 15:35
Date: Tue, 22 Sep 2009 15:35
15 lines
2011 bytes
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