[pypy-dev] Need help in concluding Multi-Thread based model thoughts between Python and PyPy
David Ripton
dripton at ripton.net
Tue Oct 30 17:33:10 CET 2012
On 10/30/2012 11:19 AM, Sasikanth Eda wrote:
> I have tried to perform a CPU intensive operation ( which typically
> involved calculation of prime numbers from 1-100000 ) using
> Multi-process and Multi-Thread models provided by
> C, Python-2.6, PyPy-1.9.
Note that your code is very slow. I can find all primes up to 100000 in
less than 0.3s in CPython and less than 0.2s in PyPy, using a single
process with a single thread.
> */{ Here I came to a conclusion that Python is limited by the Global
> Interpreter Look (GIL) when used in Multi-Thread mode (that is why it
> gave poor results when compared with process model }/*
Yes.
> *{ /Here I came to a conclusion that PyPy is better than Python }/*
Yes, PyPy is faster than CPython for most (not all!) Python programs.
> 1. Has PyPy optimized / reduced the GIL limitation ? ( what is the
> progress in PyPy version 1.9 in that when compared with Python's progress )
> 2. If PyPy is also suffering from the same GIL limitations, what made
> the program run faster than Python, is it because of
> more warm-up time, optimization of loops ?
PyPy has a Just In Time (JIT) compiler that compiles hot loops to
machine language.
> 3. What are your suggestions for me if I wanted to go for
> Multi-Thread application design ( in-terms of Python / PyPy )
For now, you will not be happy with multiple CPU-bound threads in
CPython or PyPy, because of the GIL. Jython is free-threaded but is
slow in other ways. If you insist on using threads for CPU-bound work,
you will probably be happier with another language.
However, Armin Rigo is working on Software Transactional Memory for
PyPy, which may someday end up making multi-threaded code fast. Web
search for "pypy stm" to find details.
--
David Ripton dripton at ripton.net
More information about the pypy-dev
mailing list