Pushing Pixels with Python on a Pi

Let's say you wanted to push say, 1,008 WS2811-based LED pixels with a Raspberry Pi and FadeCandy boards. Let's also say you wanted to do this with Python. You'll discover something I found out - the frame is going to suck, like less than 10fps kind of suck.

If, as in my case, your project depends on frame rates over 30fps, that's a bad, bad thing. The Raspberry Pi, for all of it's amazingness, just isn't a very fast computer and Python is a terribly efficient language. Combine the two, and you get very colorful molasses.

Luckily, there is a solution! And it's easier than I could have ever hoped - PyPy. PyPy is "PyPy is a fastcompliant alternative implementation of the Python language". The fast bit is no joke - just by running my code with PyPy rather than CPython I got close to an order of magnitude speed improvement! The startup time is very slow now, also about 10x as much, but so freakin' what - I didn't have to change a line of code (I even used the non-numpy version of the Open Pixel Control library) and everything works at the speed I need. I'll call that a win any day!