2012-10-19 35 views
2

呷有包括加載模塊時執行代碼的支持,如下所示:SWIG是否支持最終化塊?

%init %{ 
    init_variables(); 
%} 

有類似的功能也存在終結?我找不到任何文檔,也許有另一種好方法來完成相同的事情?

+1

模塊通常不卸載。你想做什麼? –

+0

每當一個Python腳本退出導入了由SWIG生成的模塊時,如果可以運行某種終結代碼將會很好。現在,我們必須爲我們的API明確添加一個終結方法。 –

回答

3

您可以在%init期間註冊atexit清理程序。這裏的工作示例:

%module sample 

%{ 
#include <stdlib.h> 
#include <stdio.h> 

void cleanup() 
{ 
    printf("cleanup!\n"); 
} 
%} 

%init %{ 
    atexit(cleanup); 
%} 

結果:

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:57:17) [MSC v.1600 64 bit (AMD64)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sample 
>>> ^Z 

cleanup! 
+0

偉大的解決方案,謝謝! –