Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #3284

Re: Questions about GIL and web services from a n00b

Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!feeder.news-service.com!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail
Return-Path <cournape@gmail.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.001
X-Spam-Evidence '*H*': 1.00; '*S*': 0.00; 'frameworks': 0.04; '(using': 0.05; 'scaling': 0.05; 'anyway).': 0.07; 'hettinger': 0.07; 'python': 0.07; 'box:': 0.09; 'mentions': 0.09; 'am,': 0.14; 'blocking': 0.14; 'wrote:': 0.14; 'library': 0.15; '(assuming': 0.16; 'async': 0.16; 'bound,': 0.16; 'event-driven': 0.16; 'factor,': 0.16; 'simultaneous': 0.16; 'subject:GIL': 0.16; 'twisted)': 0.16; 'url:documentation': 0.16; '16,': 0.16; '(i.e.': 0.18; 'question.': 0.18; 'subject:Questions': 0.19; 'cc:no real name:2**0': 0.20; 'cc:2**0': 0.20; 'programming': 0.20; 'seems': 0.21; 'header:In-Reply-To:1': 0.22; 'cc:addr:python-list': 0.22; 'insert': 0.22; 'raymond': 0.22; 'gil': 0.23; 'point,': 0.25; '(e.g.': 0.26; 'david': 0.27; 'message-id:@mail.gmail.com': 0.28; "doesn't": 0.28; 'load': 0.28; 'received:209.85.161': 0.29; 'concern': 0.29; 'depends': 0.29; 'sat,': 0.29; '(the': 0.30; "won't": 0.30; 'cc:addr:python.org': 0.31; 'points': 0.31; 'asynchronous': 0.31; 'loads': 0.31; 'threads': 0.31; 'does': 0.31; 'language.': 0.31; 'usual': 0.32; 'idea': 0.32; 'scale': 0.33; 'handling': 0.33; "isn't": 0.34; 'using': 0.34; 'there': 0.35; 'instances': 0.35; 'quite': 0.36; 'running': 0.36; 'rather': 0.36; 'processing': 0.37; 'way.': 0.37; 'received:209.85': 0.37; 'run': 0.37; 'apr': 0.38; 'designing': 0.38; 'parallel': 0.38; 'subject:web': 0.38; 'received:google.com': 0.38; 'but': 0.38; 'url:org': 0.38; 'though': 0.38; 'common': 0.39; 'received:209': 0.39; 'solution': 0.40; 'header:Received:5': 0.40; 'factor': 0.60; 'simple': 0.60; '2011': 0.62; 'natural': 0.63; 'harder': 0.65; 'high': 0.66; 'subject:about': 0.66; 'profiling': 0.84; 'service)': 0.84; 'curse': 0.91; 'subject:services': 0.93
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=uBoi+z0n2cJr1VxcKGOmPGTHtJdgEE3ETAFmgePsKFQ=; b=p5UVWp5ZNWG+TC6kcM177fO7RZWE1d5dqmRIbXy3hqCoM//s2+pGMGQtsY02Q9qUKG t08Z1i4RdRo4cLb/hfXZ1rPABSq+4f0OZj2QTHHavPzvAXu5L5tyHczfpHIrI0POT4dh 7PQLWkeM1lfEF6P87SWVS+0EornWzOVllqZ/o=
DomainKey-Signature a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=GRNfPtc8uTmP5Nzcj+AA5MnKvZwSI8cQMPkuWml6vZ1rA88HIUQmyzHAdEfTjYDiVj j8svs6t7tXslzPsL7rjiQmydEp+hU/J7P/zU4+JfWJOpnlVNTrfXymVWGfGe+hf/ZxhY AMUdNDZXHIn39M1lk6Rbw2W7llLiLf7ursCDs=
MIME-Version 1.0
In-Reply-To <e6008cc8-50f0-4d78-be78-ec6e73b974e9@22g2000prx.googlegroups.com>
References <4DA8734C.1080706@WindsorCircle.com> <1302887012.27269.2.camel@tim-laptop> <mailman.399.1302887394.9059.python-list@python.org> <e6008cc8-50f0-4d78-be78-ec6e73b974e9@22g2000prx.googlegroups.com>
Date Sat, 16 Apr 2011 11:59:57 +0900
Subject Re: Questions about GIL and web services from a n00b
From David Cournapeau <cournape@gmail.com>
To Raymond Hettinger <python@rcn.com>
Content-Type text/plain; charset=UTF-8
Content-Transfer-Encoding quoted-printable
Cc python-list@python.org
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.12
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <http://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <http://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.406.1302922799.9059.python-list@python.org> (permalink)
Lines 44
NNTP-Posting-Host 82.94.164.166
X-Trace 1302922799 news.xs4all.nl 41103 [::ffff:82.94.164.166]:41144
X-Complaints-To abuse@xs4all.nl
Xref x330-a1.tempe.blueboxinc.net comp.lang.python:3284

Show key headers only | View raw


On Sat, Apr 16, 2011 at 10:05 AM, Raymond Hettinger <python@rcn.com> wrote:
>> > Is the limiting factor CPU?
>>
>> > If it isn't (i.e. you're blocking on IO to/from a web service) then the
>> > GIL won't get in your way.
>>
>> > If it is, then run as many parallel *processes* as you have cores/CPUs
>> > (assuming you're designing an application that can have multiple
>> > instances running in parallel so that you can run over multiple servers
>> > anyway).
>>
>> Great question.  At this point, there isn't a limiting factor, but yes
>> the concern is around CPU in the future with lots of threads handling
>> many simultaneous transactions.
>
> In the Python world, the usual solution to high transaction loads is
> to use event-driven processing (using an async library such as
> Twisted) rather than using multi-threading which doesn't scale well in
> any language.

My experience is that if you are CPU bound, asynchronous programming
in python can be  more a curse than a blessing, mostly because the
need to insert "scheduling points" at the right points to avoid
blocking and because profiling becomes that much harder in something
like twisted.

It depends of course of the application, but designing from the ground
up with the idea of running multiple processes is what seems to be the
most natural way of scaling - this does not prevent using async in
each process. This has its own issues, though (e.g. in terms of
administration and monitoring).

Chris, the tornado documention mentions a simple way to get multiple
processes on one box: http://www.tornadoweb.org/documentation (section
mentiong nginx for load balancing). The principle is quite common and
is applicable to most frameworks (the solution is not specific to
tornado).

cheers.

David

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Re: Questions about GIL and web services from a n00b Chris H <chris.humphres@windsorcircle.com> - 2011-04-15 13:09 -0400
  Re: Questions about GIL and web services from a n00b Raymond Hettinger <python@rcn.com> - 2011-04-15 18:05 -0700
    Re: Questions about GIL and web services from a n00b David Cournapeau <cournape@gmail.com> - 2011-04-16 11:59 +0900
      Re: Questions about GIL and web services from a n00b sturlamolden <sturlamolden@yahoo.no> - 2011-04-17 07:48 -0700
    Re: Questions about GIL and web services from a n00b aahz@pythoncraft.com (Aahz) - 2011-04-16 07:44 -0700
      Re: Questions about GIL and web services from a n00b Chris Angelico <rosuav@gmail.com> - 2011-04-17 02:04 +1000
      Re: Questions about GIL and web services from a n00b Jean-Paul Calderone <calderone.jeanpaul@gmail.com> - 2011-04-16 13:53 -0700
        Re: Questions about GIL and web services from a n00b Michael Torrie <torriem@gmail.com> - 2011-04-16 16:10 -0600
          Re: Questions about GIL and web services from a n00b sturlamolden <sturlamolden@yahoo.no> - 2011-04-17 07:50 -0700

csiph-web