🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #26682

Re: python vs php - potrzebne argumenty

#26682
From: Przemek Rekucki
Date: Fri, 20 Nov 2009 02:24
75 lines
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-mail
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>

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