On 09.02.2012 19:25, Massimo Di Pierro wrote:
As masklinn says, the difference between garbage collection and reference counting is more than an implementation issue.
Actually it is not. The GIL is a problem for those who want to use threading.Thread and plain Python code for parallel processing. Those who think in those terms have typically prior experience with Java or .NET. Processes are excellent for concurrency, cf. multiprocessing, os.fork and MPI. They actually are more efficient than threads (due to avoidance of false sharing cache lines) and safer (deadlock and livelocks are more difficult to produce). And I assume students who learn to use such tools from the start are not annoyed by the GIL. The GIL annoys those who have learned to expect threading.Thread for CPU bound concurrency in advance -- which typically means prior experience with Java. Python threads are fine for their intended use -- e.g. I/O and background tasks in a GUI. Sturla