Обсуждение: storing plpython global pointer

Поиск
Список
Период
Сортировка

storing plpython global pointer

От
Szymon Guz
Дата:
Hi,
I need to store a global pointer for plpython usage. This is a PyObject* which can be initialized per session I think, as we have to deal with Python 2 and Python 3. This pointer points to a Python constructor of Python's Decimal type, taken from python stdlib.

I've got working code, however loading python module each time there is Numeric argument in plpython function is not very efficient, so I'd like to do it once and keep this somewhere. This has no side effects as this is a pointer to a pure function.

Where should I keep such a pointer?

thanks,
Szymon

Re: storing plpython global pointer

От
Jan Urbański
Дата:
On 28/05/13 14:04, Szymon Guz wrote:
> Hi,
> I need to store a global pointer for plpython usage. This is a PyObject*
> which can be initialized per session I think
>
> Where should I keep such a pointer?

Hi,

you probably could use a global variable, similar to PLy_interp_globals 
that's defined in plpy_main.c.

Another method would be to expose the Decimal constructor in the plpy 
module. You could modify plpy_plpymodule.c to import decimal and expose 
the Decimal constructor as plpy.Decimal.

Best,
Jan



Re: storing plpython global pointer

От
Szymon Guz
Дата:
On 28 May 2013 14:15, Jan Urbański <wulczer@wulczer.org> wrote:
On 28/05/13 14:04, Szymon Guz wrote:
Hi,
I need to store a global pointer for plpython usage. This is a PyObject*
which can be initialized per session I think

Where should I keep such a pointer?

Hi,

you probably could use a global variable, similar to PLy_interp_globals that's defined in plpy_main.c.

Another method would be to expose the Decimal constructor in the plpy module. You could modify plpy_plpymodule.c to import decimal and expose the Decimal constructor as plpy.Decimal.

Best,
Jan

I think I'd rather go with the first solution, as this function should not be accessible inside the plpython function. That's what I was thinking about as well, but I wasn't sure.

thanks,
Szymon