2016-04-08 1 views

ответ

1

NPY_OWNDATA лучше всего использовать, когда блок памяти выделяется в коде C и передается в код Cython (скорее всего, через обратный вызов). В этом случае, если вы хотите, чтобы Numpy начинал подсчет ссылок и автоматически освобождал блок памяти, когда счетчик ссылок обращается в ноль, вы добавляете флаг NPY_OWNDATA.

Если вы используете кольцевой буфер или другую конструкцию в коде C, где код Python будет временно использовать память, пока он выполняет его вычисления, а затем будет уведомлять код C, который он может повторно использовать блок памяти, то вы определенно не хотите NPY_OWNDATA, потому что Numpy освободит память, которую ожидает код C еще.

Там хорошее обсуждение этого здесь:

http://blog.enthought.com/python/numpy-arrays-with-pre-allocated-memory/#.VxpQTjArKUk

Смежные вопросы