2016-04-08 43 views

回答

1

當在C代碼中分配內存塊並傳遞給Cython代碼(可能通過回調)時,最好使用NPY_OWNDATA。在這種情況下,如果您希望Numpy開始引用計數,並在引用計數變爲零時自動釋放內存塊,則添加NPY_OWNDATA標誌。

如果您在C代碼中使用環形緩衝區或其他構造,其中Python代碼只是在臨時使用內存時進行計算,然後會通知C代碼它可以重新使用內存塊然後你肯定不想NPY_OWNDATA,因爲Numpy會釋放C代碼所期望的內存。

有一個很好的討論在這裏:

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