plpython中的import语句如何处理?

发布于 2021-01-29 15:26:45

我有一个plypython函数,它可以执行一些json魔术。为此,它显然会导入json库。

每次调用该函数都会调用导入吗?我需要了解任何性能暗示吗?

关注者
0
被浏览
138
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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之前发生。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看