plpython中的import语句如何处理?
我有一个plypython函数,它可以执行一些json魔术。为此,它显然会导入json库。
每次调用该函数都会调用导入吗?我需要了解任何性能暗示吗?
-
该
import
是对每个函数调用执行。如果您编写了一个普通的Python模块,并且该import
语句在函数体内是与模块级别相对的,则这与您得到的行为相同。是的,这会影响性能。
您可以通过以下方式缓存导入来解决此问题:
CREATE FUNCTION test() RETURNS text LANGUAGE plpythonu AS $$ if 'json' in SD: json = SD['json'] else: import json SD['json'] = json return json.dumps(...) $$;
公认这不是很漂亮,并且正在讨论实现此目的的更好方法,但是它们不会在PostgreSQL 9.4之前发生。