2016-04-08 9 views

Antwort

1

NPY_OWNDATA wird am besten verwendet, wenn der Speicherblock im C-Code zugeordnet und an den Cython-Code übergeben wird (wahrscheinlich über einen Callback). In diesem Fall, wenn Numpy die Referenzzählung beginnen und den Speicherblock automatisch freigeben soll, wenn die Referenzzählung auf Null geht, fügen Sie das NPY_OWNDATA-Flag hinzu.

Wenn Sie einen Ringpuffer oder ein anderes Konstrukt im C-Code verwenden, in dem der Python-Code den Speicher nur temporär verwendet, berechnet er den C-Code, den er erneut verwenden kann der Speicherblock dann willst du NPY_OWNDATA definitiv nicht, weil Numpy den Speicher freigeben wird, den der C-Code noch erwartet.

Es gibt eine gute Diskussion dieser hier:

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