草庐IT

cython_bbox

全部标签

python - 我可以将 Cython 模块静态链接到嵌入 python 的可执行文件中吗?

我目前有一个从嵌入python的C++编译的可执行文件。嵌入式可执行文件运行一个加载多个Cython模块的python脚本。Cython模块和可执行文件都链接到一个共享库。我想通过将共享库静态链接到可执行文件来将共享库移动到可执行文件中。我可以将Cython模块静态链接到嵌入python的可执行文件中吗?处理这种情况的最佳方法是什么? 最佳答案 是的,这是可能的,但如果你掌握了python解释器。我要描述的是在IOS平台上针对python所做的。如果你不想接触原始的python解释器,你需要检查更多如何让python知道你的模块(用

python - pypy 是否支持 cython 扩展?

我有一个在pypy中运行的项目(并且已经比它的python对应物实现了很好的加速)。但是,我确实有一个函数的Cython实现,它比pypy版本快得多。所以我想包括这个功能。问题是pypy似乎找不到这个模块(即使.so与执行的.py脚本位于同一文件夹中):ImportError:Nomodulenamedfoo那么pypy支持cython吗?谢谢。 最佳答案 如果你想让Cython扩展在PyPy下可用,你必须重新编译它并在PyPy下重新安装它。我建议首先使用virtualenv。但是,如果这纯粹是为了加速,我真的会劝阻你这样做。CPy

python - Cython:numpy 数组的无符号整数索引给出不同的结果

我通过添加一些类型并编译它,将python函数转换为cython。我在python和cython函数的结果之间得到了很小的数值差异。经过一些工作后,我发现不同之处在于使用unsignedint而不是int访问numpy数组。我使用unsignedint索引来加速访问,根据:http://docs.cython.org/src/userguide/numpy_tutorial.html#tuning-indexing-further无论如何,我认为使用无符号整数是无害的。查看这段代码:cpdeffunction(np.ndarray[np.float32_t,ndim=2]respons

python - Cython 无法在 Windows 7 x64 上编译

我正在努力在Windows7x64上安装Cython。我下载并安装了AutomatedMinGW安装程序。为distutils文件夹创建了一个distutils.cfg,内容如下:[build]compiler=mingw32将C:\MinGW\bin添加到环境变量后,我调用了easy_installCython但出现以下错误。强奸互联网并没有给我带来有用的结果,因为所有这些编译的东西(或者我应该说sh*t?)对我来说太新了。c:\users\niklas\appdata\local\temp\easy_install-dgjjub\cython-0.15\cython\plex\sc

python - 构建 Cython 模块时如何覆盖 -DNDEBUG 编译标志

我有一个Cython模块,它通过cdefextern调用C++函数。C++函数有assert()语句,我想检查这些断言。但是,当我通过调用pythonsetup.pybuild_ext--inplace创建模块时,GCC总是使用-DNDEBUG调用。无论何时运行代码,都不会检查断言。我找不到使用setup.py覆盖-DNDEBUG的方法。这可能吗?目前我发现处理此问题的唯一方法是使用pythonsetup.py使用的选项手动调用Cython、GCC和g++,但要取出-DNDEBUG。但必须有更简单的方法。 最佳答案 您可以在setu

python - 使用 pyximport 时如何设置 Cython 编译器标志?

这个问题(HowdoesoneoverwritethedefaultcompileflagsforCythonwhenbuildingwithdistutils?)描述了如何在使用distutils时设置默认的Cython标志。但是如果我只使用pyximport,我该如何设置默认编译标志?importpyximportpyximport.install()#Passcompileflagsheresomehow? 最佳答案 您应该使用.pyxbld文件,例如参见thisquestion.对于名为foo.pyx的文件,您将创建一个fo

python - 用于声明具有别名的类层次结构的 Cython 语法

这是一个抽象基类和一个具体子类,我想通过Cython将其公开给Python:classNodeDistance{protected:constGraph&G;public:NodeDistance(constGraph&G);virtual~NodeDistance();virtualvoidpreprocess()=0;virtualdoubledistance(nodeu,nodev)=0;};classNeighborhoodDistance:publicNetworKit::NodeDistance{public:NeighborhoodDistance(constGraph&

python - 使用现有 C 对象初始化 Cython 对象

C++模型假设我有以下C++数据结构,我希望向Python公开。#include#includestructmystruct{inta,b,c,d,e,f,g,h,i,j,k,l,m;};typedefstd::vector>mystruct_list;提升Python我可以使用带有以下代码的boost::python相当有效地包装这些,轻松地允许我使用现有的mystruct(复制shared_ptr)而不是重新创建现有的对象。#include"mystruct.h"#includeusingnamespaceboost::python;BOOST_PYTHON_MODULE(exam

python - Cython 中 C++ 函数的性能不佳

我有这个C++函数,我可以使用下面的代码从Python中调用它。与运行纯C++相比,性能只有一半。有没有办法让他们的表现达到同一水平?我用-Ofast-march=native标志编译这两个代码。我不明白我可以在哪里损失50%,因为大部分时间应该花在C++内核上。Cython是否正在制作我可以避免的内存拷贝?namespacediff{voiddiff_cpp(double*__restrict__at,constdouble*__restrict__a,constdoublevisc,constdoubledxidxi,constdoubledyidyi,constdoubledzi

python - cppclass Cython/C++ 定义中的重载是否被破坏?

Cython文档shows如何使用重载方法声明现有的C++类。但是,如果我使用重载方法定义自己的cppclass...cdefcppclasspoint:floatx,ypoint():this.x=0this.y=0floatsum():returnthis.x+this.yfloatsum(intz):#COMPILEERRORreturnthis.x+this.y+z...我明白了Functionsignaturedoesnotmatchpreviousdeclaration重载构造函数会出现同样的错误:cdefcppclasspoint:floatx,ypoint():this