[BangPypers] When *not* to use Python
Anand Balachandran Pillai
abpillai at gmail.com
Tue Oct 26 08:17:54 CEST 2010
On Mon, Oct 25, 2010 at 7:33 AM, Dhananjay Nene <dhananjay.nene at gmail.com>wrote:
> On Wed, Oct 20, 2010 at 4:57 PM, Noufal Ibrahim <noufal at gmail.com> wrote:
>
> >
> >
> > Assuming that most of the people here are mostly python enthusiasts or
> > learners, I'm wondering when you would *not* use Python. Let's not
> > conflate this with Open Source/Closed Source etc.
> >
> >
> Python is the language which has (what in business terms is coined as) the
> right of first refusal.
>
> ie. evaluate something whether it really makes sense in python, and if not
> in python then start exploring what else.
>
> The primary reasons which may encourage me to use a language other than
> python are :
>
> a. Need for raw CPU power. Yes there are a few of such use cases. When
> purely CPU driven and when you really really need the CPU badly (which is
> probably less than 5% cases) python performance is really poor.
> b. Need for high amounts of multithreading even while being largely CPU
> bound.
>
> Yes - both situations can be handled by escaping to C from python, but I
> would much rather handle these in Java (or languages based on JVM) rather
> than C unless I am in a very constrained hardware situation.
>
> On a separate note I do believe as we start heading towards the 32 core
> situation (say in 5 yrs time) - there better exist a better solution than
> the GIL :)
>
>
I think we should move from the thinking that concurrency <= threading
and move over to better solutions in languages like Python which have
better ways of solving the concurrency problem than actually having to
create OS level threads.
If you look at it differently, concurrency is the real problem and
threading
is just one approach to it which is kind of resource intensive and doesn't
work great in Python due to the GIL. But instead of GIL bashing, one should
look at other approaches to concurrency such as generator based
co-operative
"threading" and also look at numerous other concurrency libraries in Python
before deciding that going the way of actual threads is his solution.
The following article by Michele Simionato tries to drive home the same
point.
It is a good read, except the parts where he is trying to plug his
concurrency
library into it :)
http://www.artima.com/weblogs/viewpost.jsp?thread=299551
Python should go the direction shown by languages such as Erlang which has
true user-space multitasking with light-weight "processes". It already has
the infrastructure for it with generators etc but support for true
multitasking
at user level should be part of the language rather than added on by
third party libraries. Right now if one decides to explore Python
concurrency,
the scene is truly confusing and a little scary, since there are too many
approaches out there which also share a lot of similarities.
Hopefully the "futures" have something to offer here :)
--Anand
>
> > --
> > ~noufal
> > http://nibrahim.net.in
> >
> > _______________________________________________
> > BangPypers mailing list
> > BangPypers at python.org
> > http://mail.python.org/mailman/listinfo/bangpypers
> >
>
>
>
> --
> --------------------------------------------------------
> blog: http://blog.dhananjaynene.com
> twitter: http://twitter.com/dnene
> _______________________________________________
> BangPypers mailing list
> BangPypers at python.org
> http://mail.python.org/mailman/listinfo/bangpypers
>
--
--Anand
More information about the BangPypers
mailing list