草庐IT

cython_bbox

全部标签

c++ - 在 cython 中处理默认参数

我正在使用cython包装一些c++代码,但我不确定用默认值处理参数的最佳方法是什么。在我的c++代码中,我有参数具有默认值的函数。我想以这样一种方式包装它们,以便在未给出参数的情况下使用这些默认值。有没有办法做到这一点?此时,我可以看到提供选项参数的唯一方法是将它们定义为python代码的一部分(在pycode.pyxdeffunc语句中>下面),但是我不止一次定义了我不想要的默认值。cppcode.h:intinit(constchar*address=0,intport=0,inten_msg=false,interror=0);pycode_c.pxd:cdefexternfr

python - 通过 Cython 将 C++ vector 传递给 Numpy,无需自动复制和处理内存管理

处理大型矩阵(NxM与1K然而,有时我需要在C++中启动和预处理矩阵并将其传递给Numpy(Python3.6)。让我们假设矩阵是线性化的(所以大小是N*M并且它是一维矩阵-col/row主要在这里无关紧要)。按照这里的信息:exposingC-computedarraysinPythonwithoutdatacopies&修改它以实现C++兼容性,我能够传递C++数组。问题是如果我想使用标准vector而不是初始化数组,我会得到段错误。例如,考虑以下文件:fast.h#include#includeusingstd::cout;usingstd::endl;usingstd::vec

c++ - Cython C++ 和 std::string

从cython使用C++标准std::string的最佳方式是什么?无论如何,最后一个cython发行版应该很容易,但我想知道为什么有std::vector的包装器而不是std::string的包装器...... 最佳答案 Cython0.16includeswrappersforstd::string,可以通过以下方式导入:fromlibcpp.stringcimportstring 关于c++-CythonC++和std::string,我们在StackOverflow上找到一个类似

python - 如何正确地将 numpy 数组传递给 Cython 函数?

这在很多地方都有描述,但我根本无法让它工作。我正在从Cython调用C++函数:cimportnumpyasnpcdefexternfrom"test.h"namespace"mytest":voidtest(double*A,intm)cdefintfoo():cdefnp.ndarray[double,mode="c"]a=np.array([1,2,3,4,5],dtype=float)#passptrtofirstelementof'a'test(&a[0],len(a))return0foo()test.cpp只是:#includenamespacemytest{voidte

c++ - Cython 和 C++ 继承

我有2个类,A和B。B继承自A。//C++classA{public:intgetA(){returnthis->a;};A(){this->a=42;}private:inta;};classB:publicA{public:B(){this->b=111;};intgetB(){returnthis->b;};private:intb;};现在我想使用Cython连接这两个类,并可以从B实例调用getA()方法:a=PyA()b=PyB()asserta.getA()==b.getA()目前我的pyx文件如下所示:cdefexternfrom"Inherit.h":cdefcppc

c++ - Boost.python vs Cython 用于 C++/python 接口(interface)

我知道这已经被问了一千次了,但是我需要选择一个可以将C++函数和方法暴露给python的库。考虑到我的应用程序,主要是一个科学(矩阵)库,以及python生成器的成熟度、支持可用性和性能,我遇到了两个选择:赛通Boost.Python我已经(出于好的或坏的原因)消除了其他选项,如SWIG、SIP、Pybindgen......对这两个库有什么建议吗?这些中的任何一个都具有killer级功能?我的项目有命名空间、嵌套类、回调等。谢谢 最佳答案 Consideringmyapplication,whichmainlyisascienti

c++ - 你如何告诉 pyximport 使用 cython --cplus 选项?

pyximport非常方便,但我不知道如何让它使用Cython的C++语言选项。从命令行运行cython--cplusfoo.pyx。您如何使用pyximport实现等效功能?谢谢! 最佳答案 让Cython创建C++文件的一种方法是使用pyxbld文件。例如,创建包含以下内容的foo.pyxbld:defmake_ext(modname,pyxfilename):fromdistutils.extensionimportExtensionreturnExtension(name=modname,sources=[pyxfilena

python - 使用 Cython 进行游戏开发?

使用Cython作为游戏的主要编程语言有多实用?我是一位经验丰富的Python程序员,我非常喜欢它,但在游戏编程方面,我无疑是个新手。我知道Python通常被认为太慢而无法进行任何严肃的游戏编程,这就是为什么Cython对我来说很有趣。借助Cython,我可以使用类似Python的语言,速度堪比C。我知道无论如何我可能需要学习一点C/C++,但相比之下,Cython似乎会加快开发时间。那么,实用吗?我还能使用OpenGL、OpenAL和BulletPhysics等C/C++库吗? 最佳答案 如果您正在使用这样的组合并且您的目标是编写

python - Cython:ImportError:没有名为 'myModule' 的模块:如何将包含 cimport 的 cython 模块调用到另一个 cython 结节?

我正在尝试将cython模块data.pyx导入另一个cython模块user.pyx。一切都编译得很好,但是当我尝试在python模块中调用user.pyx时,我收到错误“ImportError:Nomodulenameddata”。一切都在同一个目录中。package/__init__.py#emptysetup.pydata.pxddata.pyxuser.pyx我的setup.pyfromdistutils.coreimportsetupfromdistutils.extensionimportExtensionfromCython.Distutilsimportbuild_e

python - 以 numpy 数组为参数的 Cython 内联函数

考虑这样的代码:importnumpyasnpcimportnumpyasnpcdefinlineinc(np.ndarray[np.int32_t]arr,inti):arr[i]+=1deftest1(np.ndarray[np.int32_t]arr):cdefintiforiinxrange(len(arr)):inc(arr,i)deftest2(np.ndarray[np.int32_t]arr):cdefintiforiinxrange(len(arr)):arr[i]+=1我使用ipython来测量test1和test2的速度:In[7]:timeitttt.test1