Note that Cython has arrays that support resizing, I think without using the GIL. See the hashing code and the recently updated SVMlight loading code for examples. These arrays can be converted to NumPy arrays with `np.frombuffer` (though I'm not sure if element access is equally fast, maybe you need typed memoryviews for that).