J'ai observé que, après une exception, j'ai un objet pour lequel le constructeur n'est pas appelé, ce qui provoque un verrouillage. Quelle est la meilleure façon d'améliorer la situation? L'appel del dans un bloc except serait-il la solution?Garbage collection d'objet après exception
b=BigHash(DB_DIR, url)
meta = bdecode(b.get())
return meta
b maintient un verrou qui est libéré sur la destruction (il est un objet de C de) une exception est levée par b.get().
Est-ce que je ne peux pas utiliser "avec" ou un autre truc de langue? A partir d'un C++, je trouve problématique qu'un objet qui tombe hors de portée ne soit pas détruit. – piotr
@plotr, l'objet est détruit quand il est hors de portée, mais peut-être qu'il a modifié le statut verrouillé de BigHash. Pouvez-vous montrer la source de BigHash? –
Il s'agit de quelques centaines de lignes de C++, ce qui serait peu pratique. L'important est que le seau est verrouillé sur le constructeur et déverrouillé sur le destructeur. Et GC de python semble laisser l'objet qui traîne. – piotr