I started learning Python two years ago. I’ve implemented server-based bots that process daily water meter readings and water account configuration changes. Additionally, I implemented a primitive Django web site, so that inventory can be loaded into the system and water reads can be “snapped” for billing. (By primitive, I mean I am not a great UI designer.)
This past week, I attended a Boston Python Meetup session on SyPy and NumPy. Python’s diverse use fascinates me, from film/video processing, to traditional programming projects and sciences like Chemistry and Biology. During this talk, I was reacquainted with the notion that Python is being used by trained programmers, scientists, and non-programmers who want to exploit Python’s power for the own work. All in all, Python is great all-purpose glue, but there is a catch.
I do not believe Python’s popularity will be diminished in the present or near or distant future. However, as different presenters at our Meetups talk about how they use Python and then talk about multithreaded environments, the Python Global Interpreter Lock (GIL) discussion rears its head. The speaker goes on to suggest that threaded code can be moved elsewhere, like into C or Java.
This bothers me. Python is a good language. It’s multiprocess (as opposed to multithreaded) library is excellent and avoids the GIL problem. If Python is good then use it and work with its problems, like using the multiprocessing library instead of multithreading. It just does not make sense to sell people on a language, and then say, to implement synchronization, use another language. (Only one Python thread can execute at a time because of the GIL.)
I believe Python developers will have to fix the GIL problem or simply accept that Python is good for some, but not all tasks.