Article View: pl.comp.lang.python
Article #26682Re: python vs php - potrzebne argumenty
From: Przemek Rekucki
Date: Fri, 20 Nov 2009 02:24
Date: Fri, 20 Nov 2009 02:24
75 lines
5167 bytes
5167 bytes
On 19 Lis, 17:24, Piotr Sawicki <ps171...@students.mimuw.edu.pl> wrote: > Łukasz Rekucki powiada: > > >> >> forki masz > > >> > Ale nie masz wątków. Nie jesteś w stanie napisać żadnej aplikacji > >> > webowej pracującej w trybie serwletowym. Nie jesteś też w stanie > >> > użyć pehapa do zautomatyzowania wielowątkowych zadań odpalanych > >> > z konsoli (a utrzymywałeś że php nadaje się też do pisnia skryptów > >> > shellowych, dosyć kiepsko się nadaje). > > >> No zaraz, akurat ,,wielowątkowe'' zadania odpalane z konsoli są > >> AFAIK zaimplementowane (w bashu) właśnie forkami a nie threadami. > > Uhmm... what? Co to są zadania wielowątkowe w bashu? Shell "by design" > > odpala procesy i łączy deskryptory. > > To właśnie napisałem... > > >> Poza tym nie wiem czemu się upierasz przy konkretnym środku - > >> wątki nie są celem samym w sobie. Jeśli chcesz pisać program > >> korzystający ze współbieżności, to można ją zrealizować również > >> procesami. > > Tak, ale czasami jest to niepotrzebnie skomplikowane i wolniejsze. > > Komplikacja zależy od systemu operacyjnego, generalnie wraz > z przyspieszaniem sprzętu context switching robi się pomijalny > czasowo (w php/pythonie nikt się nie będzie bił o mikrosekundy). Nie chodziło mi o context switching. Patrz niżej. > > > Procesy nie dzielą pamięci, więc wymiana informacji musi > > się odbywać przez PIPE lub mechanizmy IPC. > > A jednym z mechanizmów IPC jest właśnie współdzielenie pamięci. Dlatego o tym wspomniałem, ale jak dalej pisze: > > > To jeszcze nie byłoby takie złe, gdyby nie fakt, > > że nie dzielą INTERPRETERA. > > Jego kod mogą dzielić, nie dzielą danych - no i bardzo dobrze, > z punktu widzenia niezawodności i bezpieczeństwa to zaleta. Brak dzielenia danych => Niezależnie od tego czy użyjesz SHM czy kolejek, to i tak musisz robić serializację wszystkich obiektów, które mają być dostępne w obu procesach. > > > Więc każdy obiekt musisz serializować zanim > > przekażesz go do drugiego interpretera. > > Da się to schować za biblioteką/transformatorem/dekoratorem/proxy. No tak (done: http://docs.python.org/library/multiprocessing.html) tylko, że serializacja KOSZTUJE. > > > pamięci. No i oczywiście w ten sposób masz już 2 GC, a nie jeden. > > Oba mają połowę roboty, obciążenie się lepiej rozkłada. Skąd wniosek, że mają połowę roboty ? Bo na każdy dzielony fragment pamięci przypadają 2 elementy proxy. Każdy element, który dodasz do Queue będzie istniał u obu procesów. No i trzeba jeszcze zarządzać pamięcią dzieloną... > > > Dla tego procesy są dobre tylko dla luźno powiązanych zadań. > > Powiązanie zadań to w dużym stopniu cecha wybranej implementacji, > zawsze można inaczej pokroić na procesy (a nie odzwierciedlać wątki). Jak zmniejszyć ilość przekazywanych danych w schemacie z dzielonym stanem (typowy przypadek - aplikacja z GUI) dzieląc inaczej na "procesy" ? Może są jakieś magiczne sztuczki, których nie znam. > > Piotr Sawicki >
Technical Details
Message-ID:
<ef53e525-e52d-4247-9b74-c2eef04c4ea8@v25g2000yqk.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!plix.pl!newsfeed1.plix.pl!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!bandi.nntp.kabelfoon.nl!feeder.news-service.com!postnews.google.com!v25g2000yqk.googlegroups.com!not-for-mailReferences:
<h83in7$rl3$1@inews.gazeta.pl> <op.u2vg6knceaqjf2@mydot.ftpviewlocal.com> <f45ba553-947c-40ff-a96a-88ac21ea20ab@37g2000yqm.googlegroups.com> <op.u26lj6r2eaqjf2@jzabielloosx.dubtilt.local> <929230b3-8c01-4aa0-ba4d-af46cf4196f1@m16g2000yqc.googlegroups.com> <hdqtq7$2qja$1@news2.ipartners.pl> <9417e837-c468-4fe6-9ec8-5c17b268cecd@u7g2000yqm.googlegroups.com> <op.u3i9g4b5eaqjf2@jzabielloosx.dubtilt.local> <ef4e9857-22e5-42e4-a651-be6f21a56447@z41g2000yqz.googlegroups.com> <op.u3lajfqyeaqjf2@jzabielloosx.dubtilt.local> <394cbadd-a89d-41d8-8fe8-116d78e245a7@c3g2000yqd.googlegroups.com> <op.u3mzlhcheaqjf2@jzabielloosx.dubtilt.local> <slrnhgag2b.a7e.ps171721@duch.mimuw.edu.pl> <ca5ab3a0-4b3f-4c55-b162-e545f15c76da@k4g2000yqb.googlegroups.com> <slrnhgasaa.v8.ps171721@duch.mimuw.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!plix.pl!newsfeed1.plix.pl!news-out1.kabelfoon.nl!newsfeed.kabelfoon.nl!bandi.nntp.kabelfoon.nl!feeder.news-service.com!postnews.google.com!v25g2000yqk.googlegroups.com!not-for-mail From: Przemek Rekucki <przemek.rekucki@gmail.com> Newsgroups: pl.comp.lang.python Subject: Re: python vs php - potrzebne argumenty Date: Thu, 19 Nov 2009 18:24:59 -0800 (PST) Organization: http://groups.google.com Lines: 89 Message-ID: <ef53e525-e52d-4247-9b74-c2eef04c4ea8@v25g2000yqk.googlegroups.com> References: <h83in7$rl3$1@inews.gazeta.pl> <op.u2vg6knceaqjf2@mydot.ftpviewlocal.com> <f45ba553-947c-40ff-a96a-88ac21ea20ab@37g2000yqm.googlegroups.com> <op.u26lj6r2eaqjf2@jzabielloosx.dubtilt.local> <929230b3-8c01-4aa0-ba4d-af46cf4196f1@m16g2000yqc.googlegroups.com> <hdqtq7$2qja$1@news2.ipartners.pl> <9417e837-c468-4fe6-9ec8-5c17b268cecd@u7g2000yqm.googlegroups.com> <op.u3i9g4b5eaqjf2@jzabielloosx.dubtilt.local> <ef4e9857-22e5-42e4-a651-be6f21a56447@z41g2000yqz.googlegroups.com> <op.u3lajfqyeaqjf2@jzabielloosx.dubtilt.local> <394cbadd-a89d-41d8-8fe8-116d78e245a7@c3g2000yqd.googlegroups.com> <op.u3mzlhcheaqjf2@jzabielloosx.dubtilt.local> <slrnhgag2b.a7e.ps171721@duch.mimuw.edu.pl> <ca5ab3a0-4b3f-4c55-b162-e545f15c76da@k4g2000yqb.googlegroups.com> <slrnhgasaa.v8.ps171721@duch.mimuw.edu.pl> NNTP-Posting-Host: 212.76.62.207 Mime-Version: 1.0 X-Trace: posting.google.com 1258683900 27854 127.0.0.1 (20 Nov 2009 02:25:00 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 20 Nov 2009 02:25:00 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: v25g2000yqk.googlegroups.com; posting-host=212.76.62.207; posting-account=NH_qVQoAAABBKyyE1U9-kXTDpYHyR2BX User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit