I was trying to evaluate whether passing arrays as strings (as done by PyDevice) incurs too much overhead for our use case, but I didn't get very far. Calling the following function through a waveform record results in a crash.
def test_func(values):
print(numpy.array(values))
Result:
numpy/core/src/multiarray/alloc.c:91: _npy_alloc_cache: Assertion `PyGILState_Check()' failed.