[Python-Dev] Pythonic concurrency

Bill Janssen janssen at parc.com
Tue Oct 11 03:05:59 CEST 2005


Guido writes:
> Given the tendency of Python developers to build layers of
> abstractions I don't think [non-preemptive threads] will help much.

I think that's right, although I think adding priorities to Python's
existing preemptive threads might be useful for real-time programmers
(yes, as machines continue to get faster people are writing real-time
software on top of VMs).

IMO, if one understands the issues of simultaneous memory access by
multiple threads, and understands condition variables (and their
underlying concept of mutexes), threads are pretty easy to use.
Getting into the habit of always writing thread-safe code is a good
idea, too.  It would be nice if some of these programming environments
(IDLE, Emacs, Eclipse, Visual Studio) provided better support for
analysis of threading issues in programs.  I'd love to have the
Interlisp thread inspector for Python.

I sympathize with Bruce's Java experience, though.  Java's original
threading design is one of the many misfeatures of that somewhat
horrible language (along with lack of multiple-inheritance, hybrid
types, omission of unsigned integers, static typing, etc.).
Synchronized methods is a weird way of presenting mutexes, IMO.
Java's condition variables don't (didn't?  has this been fixed?) quite
work.  The emphasis on portability and the resulting notions of
red/green threading packages at the beginning didn't help either.
Read Allen Holub's book.  And Doug Lea's book.  I understand much of
this has been addressed with a new package in Java 1.5.

Bill


More information about the Python-Dev mailing list