2013-02-22 11 views
14

मेरे पास एक प्लाईप्टन फ़ंक्शन है जो कुछ जेसन जादू करता है। इसके लिए यह स्पष्ट रूप से जेसन पुस्तकालय आयात करता है।Plpython में आयात विवरण कैसे प्रबंधित किए जाते हैं?

क्या आयात को हर कॉल पर बुलाया जाता है? क्या कोई प्रदर्शन प्रभाव है जिसके बारे में मुझे अवगत होना है?

उत्तर

19

import प्रत्येक फ़ंक्शन कॉल पर निष्पादित किया जाता है। मॉड्यूल स्तर पर विरोध के रूप में एक फ़ंक्शन बॉडी के अंदर 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 से पहले नहीं होगा।

+0

आह, केवल आपके उत्तर के बाद मैंने प्रलेखन में देखा कि एक वैश्विक शब्दकोश एसडी है। आपका बहुत बहुत धन्यवाद। – Mauli

+0

@ पीटर Eisentraut क्या आप जानते हैं कि हाल के पीजी संस्करणों में इस मुद्दे में कोई सुधार हुआ है? –

+0

इसमें कोई बदलाव नहीं आया है। –

संबंधित मुद्दे