私はこのアプローチを使ってPythonでオブジェクトを削除しようとしています。ガベージコレクタは、参照されていないオブジェクトを自動的に削除するというPythonのドキュメントを読んでいます。最後のステップ Pythonを使用してメモリ内のオブジェクトを削除する
def check():
class newOb():
def __init__(self,value):
self.value = value
print self.value
return None
class ob:
ins = {}
def cr(self,someuniqueid,value) :
newV = newOb(value)
ob.ins[someuniqueid] = newV ## saving this object refernce to the ob class ins dictionary
return newV
#### Accessing Object ###
someuniqueid = 12
c = ob()
d = c.cr(someuniqueid,123)
print d.value ## will print 123
# now deleting the associated object
del c.ins[someuniqueid]
check()
は、私は、どのようなコードが間違っているし、それを
を修正する方法
ない場合は、メモリからオブジェクトを削除します は、上記の手順使用しているメモリからのオブジェクト参照を削除しています
あなたがしようとしていることは本当に明確ではありません。ディクショナリからエントリを削除したい場合、 'del'はあなたが望むものではありません。 https://stackoverflow.com/questions/6146963/when-is-del-useful-in-python – pvg
ご質問はありますか? 'del'演算子が' c.ins [someuniqueid] 'によって参照される値をガベージコレクトするのに十分であるかどうか尋ねていますか?もしそうなら、はい(他の何かが参照を保持しない限り)。 – dimo414
'del'は参照カウントを減らします。参照カウントがゼロの場合、オブジェクトは削除の候補になります。ガベージコレクタの正確なタイミングは複雑で、めったに即時ではありません。 'sys.getrefcount()' https://docs.python.org/3/library/sys.html#sysを参照してください。getrefcount – cdarke