Die Geschichte: Ich versuche, von C zu Python zu verbinden, um die schnellere Rechengeschwindigkeit von C für einen vorhandenen Python-Code zu verwenden. Ich hatte bereits einige Erfolge, auch mit NumPy-Arrays - aber jetzt scheint es ein Problem zu geben und ich kann es nicht lösen. Dies ist der Code:Python - SystemError: NULL-Ergebnis ohne Fehler in PyObject-Aufruf
#define FORMAT_VALUE_T "d"
char format_buffer[32];
typedef struct
{
PyObject_HEAD
PyArrayObject *invmat;
unsigned order;
value_t weight, *buffer;
} Det;
typedef double value_t;
typedef struct
{
PyObject_HEAD
Det *det;
value_t *row, *covs, ratio, star;
} DetAppendMove;
static int append_init(DetAppendMove *self, PyObject *args, PyObject *kwds)
{
value_t star, *temp;
PyArrayObject *row, *col;
PyObject *result = Py_BuildValue("(i)",1);
Det *dete;
snprintf(format_buffer, sizeof(format_buffer), "%s%s", "O!O!O!", FORMAT_VALUE_T);
if (PyArg_ParseTuple(args, format_buffer, &DetType, &dete, &PyArray_Type, &row, &PyArray_Type, &col, &star))
{
self->det = dete;
temp = (value_t*)self->det->buffer;
}
else
{
result = Py_BuildValue("(i)",-1);
}
return result;
}
Es ist wirklich nichts zu tun, jetzt, ich wollte nur überprüfen, ob ich in der Lage bin, diese arrays.As passiert der Titel schon sagt, ich die folgende Fehlermeldung erhalten:
Dies ist interessant, da ich bereits einige Arrays einmal passiert habe (tat es auf die gleiche Weise ..) und in der Regel diese Arrays sind vielleicht 100x100 wenn sogar. Normalerweise klagten die Menschen über sehr große Arrays ..
Ich bin mit Ubuntu 14.04 auf einem 64-Bit-Maschine, Python V2.7.6 und Numpy 1.8.2
Es wäre fantastisch, wenn einer von euch mir helfen könnte - I hab keine ahnung, was hier schief läuft ..
EDIT: Ich habe das Problem noch nicht herausgefunden, aber manchmal funktioniert es, manchmal stürzt es mit dem Fehler von oben ab. Ich habe absolut keine Ahnung, was das sein könnte - irgendjemand?
Wo ist "Ergebnis" definiert? – alk
Auch 'format_buffer' ist nicht definiert. Und wissen, wie 'FORMAT_VALUE_T' definiert ist, wäre auch nett. – alk
Entschuldigung, muss versehentlich einige Sachen gelöscht haben. Es sollte jetzt in Ordnung sein. – rammelmueller