Benchmark followup: Google-code Edition
Since last weeks tempest in a blogpot, and my subsequent post "Have GIL: Want Benchmarks" I've been doing a lot of reading, planning and discussion with people.
What this has culminated in is a google-code project I started late last week, tapping Daniel Watkins and picking the brains of others to start pulling together information about the entire threaded/concurrency domain.
The google-code project is named "python-distributed" and right now, has Daniel Watkins initial work, plus a bunch of wiki pages with my research in it. It is not exhaustive by any means - I've only just started taking half-baked blog posts, notes scattered all over my hard drive and code that I've got an trying to organize it into something.
I know people want "numbers". I know people want hard, fast and decisive numbers - that's what benchmarks are, right? More frequently, benchmarks are a lightning rod of controversy. Some will yell fowl, others will trumpet them as the greatest thing since "Good Night Moon" (truly, a god send). The only good benchmark is the one without an ulterior motive, and with the information out in the open so that everyone can run it.
I like to think of "numbers" being a non-goal for this project - personally, I want to explore all of the concurrency-like and true concurrency/threading/etc packages out there for python with a simple set of baseline tests. The eventual goal is to find one (or build one) that will make it into the python-lib the library must be easy to use, safe, and pythonic.
I've spoken to many people and my goal is to generate a lot of tests - my primary background is in test engineering (automation) - so laying out what code tests we want, what packaged we want to test and how we want to test them is primary in my mind. I mean, just the chance to visit all of these packages and ideas and hack up some code, delicious, delicious code.
So, with that all said: I'm sure people want to contribute, review, etc. With any luck I'll be able to start pushing in real code shortly, and Daniel has already pushed in his initial test code to his sandbox.
If you want to add-to, contribute, anything - feel free to shoot me an email to ask me to add you as a contributor1.
- Again, the project is here [↩]


September 16th, 2007 at 7:40 pm
[...] A thing of Note: I’ve spawned an initial google code project to explore the alternatives/benchmarks. Read about it here. [...]
September 16th, 2007 at 7:43 pm
Please also consider referencing the existing solutions for Python web frameworks that have been round for many years. In particular, multi process web servers such as Apache where Python can be embedded within the server processes using mod_python or mod_wsgi. Other possible solutions are daemon mode of mod_wsgi, mod_fastcgi, mod_fcgid and mod_scgi modules for Apache. These allow multiple daemon processes to be created and to some degree managed by Apache, and to which HTTP requests can be proxied for processing. Other web servers such as lighttpd and nginx also support fastcgi functionality.
Because of the way the web servers can distribute requests across multiple processes, one can very easily make use of multiple processors and cores with no change to applications.
For my original response to comments made by Guido in this Parallel Python discussion outlining these solutions see:
http://blog.dscpl.com.au/2007/09/parallel-python-discussion-and-modwsgi.html
An older blog entry:
http://blog.dscpl.com.au/2007/07/web-hosting-landscape-and-modwsgi.html
also describes why the Python GIL is not as big a deal in Python web applications hosted under Apache as some think it is.
September 16th, 2007 at 7:47 pm
Thanks for the information - one of the key things that was brought up to me in private is to make sure that if “we” found “something” that was attractive, that we should make sure that projects like web.py/django/TG/etc could take advantage of it.
As for:
You’re dead on - and I had forgotten that very valid point in this discussion.
I’ve added your information and links to the wiki
September 17th, 2007 at 11:46 am
Quite off topic, but I would recommend ‘If you give a Moose a Muffin’ as well as the other books by that author. (Oh and the entire series from the author of ‘Click Clack Moo’.)
December 24th, 2007 at 10:52 am
Jesse,
Have you come up with any “numbers” or results from your investigations?
Thanks!
December 24th, 2007 at 2:21 pm
Steve,
Yes, I have - some of the work for this was turned into an article which was published this month for Python magazine, after the holidays, I’ll be throwing more over the wall.