python-c-extension

    6熱度

    1回答

    基本上我想要用C編寫 所以Python程序調用函數(據我所知),我的選擇是: ctypes的/ CFFI 創建一個DLL/SO/DyLib含有C函數和使用ctypes的或CFFI訪問它們。顯然CFFI是更快的方法,唯一的缺點是必須在python中聲明所有的函數簽名。 優點: 不要做任何適應在我的C函數。所有的類型轉換都是用Python完成的。 缺點: 性能? Python的二進制模塊 C編寫一個P

    1熱度

    1回答

    我正在學習/嘗試在C中的Python擴展。我試圖包裝一個C庫,以便它可以以更Pythonic的方式使用。例如: import mylib widget = mylib.widget.Widget(name="Hello!") widget.show() mylib.utils.say_hello() 在C代碼,傳遞給PyModule_Create模塊的名稱分別爲 「mylib中」,

    0熱度

    1回答

    我在C中編寫了一個Python 3擴展模塊,但似乎無法讓Python導入它。 有什麼辦法讓Python打印出它試圖加載的共享庫(.so),以及它爲什麼會失敗? 可悲的是,我讀的所有文檔都沒有真正幫助,因爲沒有一個簡明的描述本地導入過程。 我想的是: ctypes.CDLL("libmydep1.so") ctypes.CDLL("libmydep2.so") try: import

    7熱度

    2回答

    我正在Cython中編寫一個Python 2.7擴展模塊。 如何創建一個Python對象來實現包裝C庫給我的一段內存的新式緩衝接口?內存塊只是一串字節,而不是結構或多維數組。我得到了一個const void *指針和一個長度,以及指針保持有效時間的一些細節。 我無法複製內存 - 這會導致我的應用程序性能下降。 對於舊式緩衝區對象,我可以簡單地使用PyBuffer_FromMemory(),但我似乎

    6熱度

    1回答

    我正在手動修改NumPy數組的形狀和大小,這可能(或可能不)使鄰接標誌無效。 我必須再手動檢查進展是否與您所期望的形狀和NPY_C_CONTIGUOUS(或NPY_F_CONTIGUOUS)值是多少? 是否有一個API函數會爲我做這些,並根據需要自動清除或啓用標誌?

    -1熱度

    1回答

    我想爲Python編寫一個C擴展,如下所示,此代碼的目的是計算歐幾里得從浮點的2個列表中進行選擇。 C代碼: #include <python2.7/Python.h> #include <math.h> static PyObject* cutil_euclidean_dist(PyObject* self, PyObject* args) { PyObject *seq_a,

    0熱度

    1回答

    #include <Python.h> int isCodeValid() { char *base = calloc(512, 1); // free(base); // base = calloc(512,1); base = realloc(512, 1); free(base); return 1; } static PyMethodD

    6熱度

    2回答

    我試圖編譯從文檔https://docs.python.org/2.7/extending/embedding.html的例子,我的代碼看起來酷似5.1下一個: #include <Python.h> int main(int argc, char *argv[]) { Py_SetProgramName(argv[0]); Py_Initialize();

    2熱度

    1回答

    我想要一個Python腳本爲正在運行腳本的任何版本的Python解釋器構建一個Python C擴展模塊。爲此,我想要動態獲取相關的C編譯器標記 - 完成此操作的一種方法是獲取 CLI工具的輸出,例如,像這樣: subprocess.check_output(["python-config", "--includes"]) 不幸的是,在其上安裝了Python的幾個版本的系統,這種方法可能無法找到

    2熱度

    1回答

    Python/C API有許多相關的函數,這些函數執行類似的操作,其中一個通常用於一般用途,另一個則以某種方式更有效或便於特定情況。 例如,PyDict_SetItem和PyDict_SetItemString是相同的,但後者專門用於C字符串作爲關鍵字。對於PyList_SetItem和PyList_SET_ITEM,第二個沒有錯誤檢查,也不會遞減現有項目(explained here)。 但是,