dl module
Thursday, March 23rd, 2006dl 的作用在於相容傳統 c 裡的 dlopen
他可以直接把 c 寫的 .so 抓進來用 不過有一些限制
1. dl 中的函式 參數最多不能超過 10 個
2. 參數的型別只能是 const str * / int
3. python 只會傳入三種相對應的值
字串 : 字串的起始位址, 即 const str *
None : NULL
Integer : int
4. 傳回值必需要是 long
假設用 c 寫了一個簡單的 summation funtion
long sum(int lb, int ub)
{
int s = 0, i;
for( i = lb; i <= ub; i++ )
s += i;
return s;
}
編譯成 util.so 那麼在 python 裡可以這樣引用
import dl, sys
lib = dl.open(’./util.so’)
if not lib: sys.exit()
try:
if lib.sym(’sum’): s = lib.call(’sum’, 1, 5)
print ’sum:’, s
except NameError:
print ”can’t find function”
如果沒有資料交換 (或只需要傳回簡單資料) 這是個簡單的方案
例如說把東西丟進 c 裡處理完就存檔 這樣就很方便了 不必動用 py extension
但通常會動用 c 就是因為需要快速運算並取回結果阿…
也許透過 shm 是個好方法