草庐IT

cython_bbox

全部标签

c++ - 在 Cython 中包装 C++ 模板函数/方法

我正在尝试用Cython包装一些C++代码。我有一个使用模板方法的类,但它本身不是模板。classSomeClass{templateSomeClass(T&spam);};由于类不是模板而只是构造函数,所以我不能像这样在Cython中将类声明为模板。#wrong!cdefexternfrom"SomeClass.h":cppclassSomeClass[T]:SomeClass(T&spam)如何包装模板方法? 最佳答案 对于非构造函数模板方法,使用以下非模板类:classSomeClass{templatevoidother(T

c++ - 模板类中的 Cython C++ 静态方法

问题我有一个C++模板类,它有一个静态方法。它看起来或多或少像这样:templateclassFoo{staticstd::shared_ptr>doSth();}所以在C++中你可以这样调用它:Foo::doSth();.然而在Cython中,调用静态方法的方式是使用类名作为命名空间:cdefexternfrom"Bar.h"namespace"Bar":shared_ptr[Bar]doSth()#assumingshared_ptrisalreadydeclared但这没有模板的概念。显然,简单地传递Foo作为命名空间不起作用,因为它转换为Foo::doStr()在C++中,没有

python - 如何使用 cython 编译扩展?

我正在尝试从示例页面编译一个简单的cython扩展here在我的Windows764位机器上安装了Python2.664位版本。我从Gohlke'spage安装了适用于Windows64位版本的Cython0.15.1|.基本上,来自here的答案和here不是我的选择,因为我确实需要Python64位版本来处理更大的内存。另外,因为我正在尝试使用MicrosoftSDKfor.NET4进行编译,我不能使用后一种解决方案中的方法。我尝试了这些步骤here并观察到绿色窗口,但编译现在抛出cannotfindvcvarsall.bat错误。以下是我尝试的命令序列:C:\>cd"Progra

python - 即使在编辑 PATH、在 distutils 中创建文件、删除所有 -mno-cygwin 实例后,也无法让 Cython 找到 MinGW gcc 编译器

我试图让cython意识到我在MinGW32位中有一个c编译器,我已经尝试了我在网上找到的所有内容,但它仍然无法正常工作。我正在运行Windows7Professional64位。这是我尝试过的:(1)我有Python2.7,我刚刚安装了带有选项gcc和g++以及一些其他选项的MinGW(2)我编辑了PATH环境变量,使其包含C:\MinGW\bin;C:\MinGW\MSYS\1.0\local\bin;C:\MinGW\MSYS\1.0\bin(3)我通过创建一个名为的文件告诉Python使用MinGW作为默认编译器C:\Python27\Lib\distutils\distuti

python - Cython 安装问题

我得到了Cython0.15并尝试像这样安装它pythonsetup.pyinstall我明白了:runninginstallrunningbuildrunningbuild_pyrunningbuild_extbuilding'Cython.Plex.Scanners'extensionerror:Unabletofindvcvarsall.bat这是什么意思?我有MicorsoftVisualStudio2008和WindowsSDK。使用Windows7,python2.6 最佳答案 我没有直接回答你的问题,但我强烈建议给这个

python - cython 中的数组数组

如何在cython中声明一组数组?更准确地说,我想构造(声明然后初始化)一个mxn矩阵,将其称为A,其中每个条目[i,j]都是一维double组(长度min(i,j),用零填充)cdefnp.ndarray[np.double_t,ndim=1]A[i,j]A[i,j]=np.zeros((min(i,j)),dtype=np.double)对于(m,n)=(4,3),printA应该返回如下内容:[[[],[],[]],[[],[0.],[0.]],[[],[0.],[0.,0.]],[[],[0.],[0.,0.]]]如何声明和初始化A? 最佳答案

python - Cython - 字典键和值静态类型定义

我想使用Cython编译一个Python模块,该模块与一个字典一起工作,其中所有键的类型都是整数(或者无论其他什么静态和已知类型),所有值都是unicode类型(或其他静态和已知)。现在,为了加快速度,我可以声明cdefdictDict还有cdefintkcdefunicodev但是,我可以对整个“dictint->unicode”结构进行静态声明吗?谢谢, 最佳答案 我认为简短的回答是否定的。Cython仍在使用内置的Python字典。如果您将对象声明为dict,它可以利用一些优化,但最终dict必须能够存储不同类型的对象,因此您

python - np.ascontiguousarray 与 np.asarray 与 Cython

跟进问题howtopassnumpyarraytoCythonfunctioncorrectly?:当将Cython中的numpy.ndarrays传递给只处理连续数组的C函数时,做之间有区别吗:np.ndarray[double,ndim=1,mode="c"]arr=np.ascontiguousarray(np.array([1,2,3],dtype=float))和np.ndarray[double,ndim=1,mode="c"]arr=np.asarray(np.array([1,2,3],dtype=float),order="c")两者都需要吗?np.ascontigu

python - 从 Python 调用 Cython C 函数

我有一个Cython名为foo.pyx的文件包含以下函数:defadd_one(intn):cdefintm=n+1returnmcdefintc_add_one(intn):returnn+1我使用cython-afoo.pyx构建了这个pyx文件,然后可以执行以下操作:>>>importfoo>>>foo.add_one(5)6>>>foo.c_add_one(5)AttributeError:'module'objecthasnoattribute'c_add_one'看来我无法从python调用c_add_one。使用cdef声明函数有哪些优点? 最

python - 如何手动编译使用 C++ 的 Cython 代码?

我完全复制了CythondocumentationforwrappingC++classes中给出的示例代码.我可以使用distutils和cythonize()方法成功构建和导入rect.so扩展,即:将以下指令放在rect.pyx的顶部:#distutils:language=c++#distutils:sources=Rectangle.cpp编写包含以下内容的setup.py文件:fromdistutils.coreimportsetupfromCython.Buildimportcythonizesetup(name="rectangleapp",ext_modules=cy