Late 2006, I posted a rant on the state of concurrent processing on Python.
Looking back, I don't really think I was thinking very clearly that day. I imagine I was contemplating a multi-threaded raytracer in Python. A fun idea, but kind of pointless really. Stupid even.
Since that post, I've implemented exactly one program where I had to explicitly use threads. Why did I need threads? Simply because I wanted non-blocking IO, and couldn't be bothered using other asynchronous mechanisms.
The lesson? YAGNI.
Monday, January 22, 2007
Subscribe to:
Post Comments (Atom)
Popular Posts
-
These are the robots I've been working on for the last 12 months. They each weigh about 11 tonnes and have a 17 meter reach. The control...
-
So, you've created a car prefab using WheelCollider components, and now you can apply a motorTorque to make the whole thing move along. ...
-
Why would I ask that question? Python 3 has been available for some time now, yet uptake is slow. There aren't a whole lot of packages i...
-
Dear Lazyweb. Imagine a nice RESTful interface for working with Tags. The URL: /tags/ will return a list of all the tags. The URL: /tags/fo...
-
Pyglet 1.1 comes with a shiny new event loop. I've always liked to control my own mainloop, so that I can implement things like fixed t...
-
Often, when building a game, you need to test if objects are colliding. The objects could be spaceships, rocks, mouse pointers, laser beams....
-
MiddleMan: A Pub/Sub and Request/Response server in Go. This is my first Go project. It is a rewrite of an existing Python server, based o...
-
I went to the pulse expo this evening, where one of the speakers mentioned that Ubisoft are in town (Perth, Western Australia), looking to...
-
I've built sites with Django, TurboGears and Pylons. I've come to prefer Pylons. Why? Pylons gets out of the way, and stays out of t...
-
iPhone developers... weep. The new terms of service for iPhone OS 4.0 has an awful restriciton. 3.3.1 Applications may only use Documented A...
2 comments:
> I ... couldn't be bothered using
> other asynchronous mechanisms.
That's a pity. Sure, at first it's not easy wrapping one's head around Twisted Deferreds, but once you do, you feel peculiarly... empowered. ;-)
There's a donwside to async code: the inside-out appearance it takes on. That can now be minimized, thanks to Python 2.5, Twisted 2.5, and the new inline callbacks.
Give it a spin, you'll not regret it.
Of course there are some users who really do need concurrency across multiple processors, and they are maybe beginning to wonder about their migration path as multicore processors and multiprocessor architectures become more common.
So, while it may be true that you aren't going to need it, that doesn't mean that nobody is going to need it. The stackless environment with its ability to pickle tasklets on one machine and unpickle and activate them on another looks like a potentially usable solution. There may be others.
Post a Comment