[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