क्या Python में किसी ऑब्जेक्ट की वर्तमान रेफ गिनती प्राप्त करने का कोई तरीका है?क्या पाइथन में किसी ऑब्जेक्ट की वर्तमान रेफ गिनती प्राप्त करने का कोई तरीका है?
उत्तर
gc
मॉड्यूल, कचरा कलेक्टर हिम्मत करने के लिए इंटरफ़ेस का उपयोग करना, आप gc.get_referrers(foo)
फोन सब कुछ foo
की चर्चा करते हुए की एक सूची प्राप्त कर सकते हैं।
इसलिए, len(gc.get_referrers(foo))
आपको उस सूची की लंबाई देगा: रेफरर्स की संख्या, जो आप के बाद हैं।
gc
module documentation भी देखें।
import sys
sys.getrefcount(object) #-- Returns the reference count of the object.
आम तौर पर 1 से अधिक आप वस्तु आर्ग अस्थायी संदर्भ की वजह से उम्मीद कर सकते हैं:
अजगर documentation के अनुसार, sys
मॉड्यूल एक समारोह में शामिल है।
आधिकारिक दस्तावेज़ीकरण से लिंक करें: https://docs.python.org/2/library/sys.html#sys.getrefcount – moi
gc.get_referrers()
और sys.getrefcount()
है। लेकिन, यह देखना मुश्किल है कि कैसे sys.getrefcount(X)
पारंपरिक संदर्भ गिनती के उद्देश्य को पूरा कर सकता है। पर विचार करें:
import sys
def function(X):
sub_function(X)
def sub_function(X):
sub_sub_function(X)
def sub_sub_function(X):
print sys.getrefcount(X)
फिर function(SomeObject)
बचाता है '7',
sub_function(SomeObject)
उद्धार '5',
sub_sub_function(SomeObject)
बचाता है '3', और
sys.getrefcount(SomeObject)
उद्धार '2'।
दूसरे शब्दों में: यदि आप sys.getrefcount()
का उपयोग करते हैं तो आपको फ़ंक्शन कॉल गहराई से अवगत होना चाहिए। gc.get_referrers()
के लिए किसी को संदर्भकर्ताओं की सूची फ़िल्टर करना पड़ सकता है।
मैं मैनुअल संदर्भ को "परिवर्तन पर अलगाव" जैसे उद्देश्यों के लिए प्रस्तावित करता हूं, यानी "क्लोन अगर कहीं और संदर्भित किया गया है"।
- 1. क्या पीईडीईवी में आरईपीएल प्राप्त करने का कोई तरीका है?
- 2. क्या पाइथन में स्थिरांक (गणना) की नामित श्रृंखला प्राप्त करने का कोई बेहतर तरीका है?
- 3. क्या कोई ऑब्जेक्ट का स्मृति पता एनएसएसटींग के रूप में प्राप्त करने का कोई तरीका है?
- 4. क्या ट्वीट की पसंदीदा गिनती पाने का कोई तरीका है?
- 5. क्या किसी ऑब्जेक्ट में बदलावों की निगरानी करने का कोई तरीका है?
- 6. थ्रेड सुरक्षित रेफ गिनती
- 7. किसी ऑब्जेक्ट ऑब्जेक्ट से ऑब्जेक्ट कॉन्टेक्स्ट संदर्भ प्राप्त करने का सबसे तेज़ तरीका क्या है?
- 8. क्या Python में किसी अंश का दोहराव दशमलव भाग प्राप्त करने का कोई तरीका है?
- 9. क्या box2dWeb में console.log() पर किसी ऑब्जेक्ट का output.x आउटपुट करने का कोई तरीका है?
- 10. क्या संपत्तिपाथ वर्ग का उपयोग कर ऑब्जेक्ट का संपत्ति मूल्य प्राप्त करने का कोई तरीका है?
- 11. क्या कोई संदर्भ पता प्राप्त करने का कोई तरीका है?
- 12. क्या अजगर में एक पुनरावृत्त की लंबाई प्राप्त करने के लिए कोई अंतर्निहित तरीका है?
- 13. क्या कोई ऑब्जेक्ट कुंजी ऑब्जेक्ट कुंजी के रूप में उपयोग करने का कोई तरीका है?
- 14. मैं पर्ल हैश की रेफ गिनती कैसे प्राप्त कर सकता हूं?
- 15. क्या किसी विधि को पारित तर्कों की सरणी प्राप्त करने का कोई तरीका है?
- 16. जावा में स्मार्ट पॉइंटर्स और रेफ गिनती
- 17. वर्तमान फ़ंक्शन के भीतर से वर्तमान फ़ंक्शन प्राप्त करने का कोई तरीका है?
- 18. क्या लिनक्स में प्रक्रियाओं की वर्तमान संख्या प्राप्त करने का हल्का तरीका है?
- 19. TStringGrid - क्या "वर्तमान/चयनित" पंक्ति प्राप्त करने का कोई आसान तरीका है?
- 20. क्या इस दिन से वर्तमान दिन की शुरुआत शुरू करने का कोई आसान तरीका है?
- 21. क्या ओ (1) समय में किसी सेट से आइटम प्राप्त करने का कोई तरीका है?
- 22. किसी ऑब्जेक्ट की बनाए रखने की गिनती क्या बढ़ जाती है?
- 23. क्या किसी संदेश का एसएचए प्राप्त करने का कोई तरीका है?
- 24. क्या PowerPoint प्रस्तुति में स्लाइड की अनुक्रमणिका प्राप्त करने का कोई सीधा तरीका है?
- 25. पायथन। किसी ऑब्जेक्ट का आकार प्राप्त करें
- 26. क्या ऐसा करने का कोई तरीका है?
- 27. क्या स्कैला 2.10 में रनटाइम संकलन त्रुटियों की उचित रिपोर्ट प्राप्त करने का कोई तरीका है?
- 28. क्या सी # में दिनांक परिवर्तन की अधिसूचना प्राप्त करने का कोई तरीका है?
- 29. क्या PHP में उपलब्ध लोकेशंस की सूची प्राप्त करने का कोई तरीका है?
- 30. क्या CGPoints की तुलना करने का कोई तरीका है?
यह भी उल्लेख किया जाना चाहिए कि गणना +1 होगी, क्योंकि जीसी सूची वस्तु को भी संदर्भित करती है। –
मुझे लगता है कि @Dan कि जवाब सही है: >>> आयात जीसी >>> वर्ग बार(): ... पारित ... >>> ख = बार() >>> लेन (gc.get_referrers (बी)) >>> gc.get_referrers (बी) [{'बी': <__ मुख्य__.बार उदाहरण 0x7f1f010d0e18>, 'बार': <वर्ग __main__.Bar 0x7f1f010d6530 पर>>, '__builtins__': <मॉड्यूल '__builtin__' (अंतर्निर्मित)>, '__package__': कोई नहीं, 'gc':, '__name__': '__main__', '__doc__': कोई नहीं}] –
Havok
@ tehvan का उत्तर ('sys.getrefcount (ऑब्जेक्ट)') 'len (gc.get_referrers (foo)) से अधिक सरल है, यदि आपको वास्तव में केवल संख्या की आवश्यकता है। एंड्रॉइड के qpython3 में – moi