Python pixel manipulation library
<p>So I'm going through the beginning stages of producing a game in Python, and I'm looking for a library that is able to manipulate pixels and blit them relatively fast.</p>

<p>My first thought was pygame, as it deals in pure 2D surfaces, but it only allows pixel access through <code>pygame.get_at()</code>, <code>pygame.set_at()</code> and <code>pygame.get_buffer()</code>, all of which lock the surface each time they're called, making them slow to use. I can also use  the <code>PixelArray</code> and <code>surfarray</code> classes, but they are locked for the duration of their lifetimes, and the only way to blit them to a surface is to either copy the pixels to a new surface, or use <code>surfarray.blit_array</code>, which requires creating a subsurface of the screen and blitting it to that, if the array is smaller than the screen (if it's bigger I can just use a slice of the array, which is no problem).</p>

<p>I don't have much experience with PyOpenGL or Pyglet, but I'm wondering if there is a faster library for doing pixel manipulation in, or if there is a faster method, in Pygame, for doing pixel manupilation. I did some work with SDL and OpenGL in C, and I do like the idea of adding vertex/fragment shaders to my program.</p>

<p>My program will chiefly be dealing in loading images and writing/reading to/from surfaces.</p>
