में अस्थायी चर मैंने मैथ्यूमिका नामक गणित के लिए एक पैकेज लिखा है। संक्षेप में, यह आपको पाइथन में जैसे ही गणित में ऑब्जेक्ट ओरिएंटेशन का उपयोग करने की अनुमति देता है। कृपया विवरण के लिए Voofie/MathOO में निम्न लेख पढ़ें:गणित
समस्या मैं का सामना करना पड़ा है कि, मैं कचरा कलेक्टर है, ताकि उपयोगकर्ता स्पष्ट रूप से उपयोग करने के बाद ऑब्जेक्ट को हटाने की जरूरत नहीं है चाहते हैं। उदाहरण के लिए:
NewClass[Object1]
Object1.$init$[self_]:= Return[];
ऊपर दो पंक्तियों में, मैं सिर्फ Object1 परिभाषित एक नया वर्ग है, और निर्माता एक खाली समारोह होने के लिए। यदि आप पाइथन से परिचित हैं, तो आपको __init__()
के साथ समानता दिखाई देनी चाहिए।
एक Object1 का दृष्टांत के लिए, मुझे क्या करना:
object1 = new[Object1][]
उत्पादन होता है:
Out: object$13
यहाँ, आपत्ति $ 13 एक अस्थायी चर रहा है। मैं क्या चाहता हूं, जब इस अस्थायी चर के संदर्भ नहीं हैं, तो इसे स्वचालित रूप से हटा दिया जाना चाहिए। लेकिन यह उम्मीद के रूप में काम नहीं करता है। मैं इस समस्या की पहचान की है निम्नलिखित हो:
In: y = Module[{x}, x[1] = 2; x]
Out: x$117
In: FullDefinition[y]
Out: y = x$117
Attributes[x$117] = {Temporary}
x$117[1] = 2
के बाद से y एक्स $ 117 के लिए एक संदर्भ रखती है, तो $ 117 x अभी तक नहीं हटाया जाता है। अब हम 1 करने के लिए y का मूल्य निर्धारित करके संदर्भ डिलीट:
In: y = 1;
हालांकि, x $ 117 अभी भी यहाँ है:
In: Definition[x$117]
Out: Attributes[x$117] = {Temporary}
x$117[1] = 2
लेकिन मैं के बाद से यह अब संदर्भित है चर हटाया जा करने की उम्मीद । मेथेमेटिका के manual से, यह कहा:
इसलिए, यह मेथेमेटिका के एक बग है: अगर वे अब संदर्भित कर रहे हैं
अस्थाई प्रतीकों निकाल दिए जाते हैं? या क्या कोई कामकाज तरीका है? मैं गणित 7.0 का उपयोग कर रहा हूँ। आपका बहुत बहुत धन्यवाद।
देखें [यह उत्तर] (http: // 'मॉड्यूल' से संबंधित कचरा कलेक्टर में कुछ कीड़े के लिए stackoverflow.com/questions/6867892/reducing-memory-usage-in-an-extended-mathematica-session/6873142#6873142)। –