On 5/28/14 6:22 AM, Lakshmipathi.G wrote:
Hi -I have C-Python api like below. It works fine, but the problem is while invoking this method from python script say #cat script.py <snip> offset=0 size=4 write_object(offset,size) </snip> This calls write_this_c() C api and returns quickly to next printf statement. But the return call (Py_RETURN_NONE) takes something like 4-6 seconds. ----- static PyMethodDef xyz_methods[] = { {"write_object", write_object, METH_VARARGS,"write some stuff "}, {NULL, NULL, 0, NULL} }; ---- static PyObject * write_object(PyObject *self, PyObject *args) { int offset, size; if (!PyArg_ParseTuple(args,"ii", &offset, &size)) Py_RETURN_NONE; printf("before call"); write_this_c(offset, size); printf("after call"); Py_RETURN_NONE; ##delay happens here } How to avoid this delay time? Thanks for any help/pointers!
It can't be as simple as the Py_RETURN_NONE taking 4-6 seconds: hundreds of built-in functions in Python are coded exactly this way, and they don't have a delay on return. Something else is going on.
How did you determine that it was the return that was taking the time?
---- ---- Cheers, Lakshmipathi.G FOSS Programmer. www.giis.co.in
-- Ned Batchelder, http://nedbatchelder.com -- https://mail.python.org/mailman/listinfo/python-list
