Extending Python with C or C++ beinhaltet eine gemeinsame Bibliothek zu definieren, die eine initialization function entlang der Linien von aussetztWo definiere ich Code zum Freigeben von Ressourcen, die in einer C-Python-Modul-Init-Funktion zugeordnet sind?
PyMODINIT_FUNC
initspam(void)
{
(void) Py_InitModule("spam", SpamMethods);
}
ich hier Zuweisung von Ressourcen Unter der Annahme, wie ein globales Objekt über
g_bookkeeping = new Bookkeeping;
Zuweisung Was die richtige Stelle wäre zu schreiben die entsprechende delete
Aussage? Es scheint keinen Haken zu geben, um zu bemerken, dass ein Modul entladen ist, oder ist es da?
Ich hielt kurz ein globales Objekt verwenden, wie
Bookkeeping g_bookkeeping;
... aber ich möchte über eine präzise Kontrolle haben, wenn das Objekt aufgebaut oder zerstört wird.
Die Python-Dokumentationen talks about finalization und erwähnt eine Py_Finalize()
Aufruf der - zumindest in Python 2.x - internally calls PyImport_Cleanup
. Dies scheint jedoch nicht viel zu tun, was das Anpassen des Herunterfahrens des Moduls angeht.