我目前正在使用 Python API 撰寫一個小的 python 模塊,這將加速一些較慢的 python 代碼,這些代碼在各種模擬中重復運行。我的問題是目前這段代碼需要一堆引數,在許多用例中不會改變。例如,函式簽名將類似于:func(x,a,b,c,d,e),但在初始化之后只會x改變。因此lambda x : func(x,a,b,c,d,e),在使用之前,我會將 python 代碼與我包裝它們的位置一起散落一地。我觀察到這實際上引入了相當多的呼叫開銷。
我解決這個問題的想法是創建一個PyObject*本質上是C lambda 而不是 python 的。與此有關的主要問題是我還沒有找到PyObject從 C lambda 甚至更低級別的函式創建s的方法。由于python中的函式/ lambdas可以作為引數傳遞,我認為這是可能的,但是我缺少一種干凈的方法。
uj5u.com熱心網友回復:
例如,我會認真考慮使用 swig 而不是 pybind11。這只是安心。如果你不想直接使用 swig,你至少可以看看 swig 做了什么來包裝代理物件等功能。
http://www.swig.org/Doc2.0/SWIGPlus.html#SWIGPlus_nn38
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/402519.html
標籤:
上一篇:在C 中獲取當前函式的回傳型別
