草庐IT

cythonized

全部标签

python - Cython 回调适用于函数,但不适用于绑定(bind)方法

我正在为C++库实现一个基于cython的接口(interface)。我实现了一个回调系统,它适用于普通函数,但在传入绑定(bind)方法时会奇怪地失败。这是我的cython代码的一部分:cdefexternfrom"VolumeHapticTool.h":cdefcppclassHDButtonEvent:boolisPressed()unsignedintgetButtonId()Vec3[float]getPosition()ctypedefvoid(*HDButtonCallback)(HDButtonEvent,void*)cdefexternfrom"Scene.h":cd

python - 是什么导致我的矩阵向量乘法的 Cython 实现速度减慢 2 倍?

我目前正尝试在Cython中实现基本的矩阵向量乘法(作为muchlargerprojecttoreducecomputation的一部分)并发现我的代码比Numpy.dot慢大约2倍。我想知道是否有什么东西是我遗漏的导致速度变慢的。我正在编写优化的Cython代码,声明变量类型,需要连续数组,并避免缓存未命中。我什至尝试将Cython作为包装器并调用nativeC代码(见下文)。我想知道:我还能做些什么来加快我的实现速度,使这个基本操作的运行速度与NumPy一样快?我使用的Cython代码如下:importnumpyasnpcimportnumpyasnpcimportcythonDT

python - Cython 的 prange 没有提高性能

我正在尝试使用Cython的prange提高某些度量计算的性能。这是我的代码:defshausdorff(float64_t[:,::1]XAnotNone,float64_t[:,:,::1]XBnotNone):cdef:Py_ssize_tiPy_ssize_tn=XB.shape[2]float64_t[::1]hdist=np.zeros(n)#arrangementtofixcontiguityXB=np.asanyarray([np.ascontiguousarray(XB[:,:,i])foriinrange(n)])foriinrange(n):hdist[i]=_h

python - Cython 元类.pxd : How should I implement `__eq__()` ?

我正在尝试使用cython.pxd来扩充现有的python源代码,正如StefanBehnel在"UsingtheCythonCompilertowritefastPythoncode"的幻灯片32到35中所说明的那样.作为练习的一部分,我一直在使用元类中的__eq__()方法碰壁。我希望我可以选择一个更简单的案例来启动Cython,但我的生产代码并不那么简单。我编写了一个“最小的完整示例”来说明问题......请参阅问题底部的代码。短篇小说...如果我使用cdefinline__richcmp__(Japan_Car_ABCself,Japan_Car_ABCother,intop)

python - 性能比较Fortran,Numpy,Cython和Numexpr

我有以下功能:defget_denom(n_comp,qs,x,cp,cs):'''len(n_comp)=1#numberofproteinslen(cp)=n_comp#proteinconcentrationlen(qp)=n_comp#proteincapacitylen(x)=3*n_comp+1#fitparameterslen(cs)=1'''k=x[0:n_comp]sigma=x[n_comp:2*n_comp]z=x[2*n_comp:3*n_comp]a=(sigma+z)*(k*(qs/cs)**(z-1))*cpdenom=np.sum(a)+csreturn

python - 使用 python 调试器 (pdb) 时调试 cython 代码 (.pyx) - 最佳实践

我已阅读Cythondebugging,putabreakpoint,和https://groups.google.com/forum/#!topic/apam-python-users/6rsRwcCAms4想知道调试从python代码调用的cython代码时最好的工作流程是什么?理想情况下,我想在从我的IDE(pycharm)启动的python调试session期间进入.pyx文件,但似乎这是不可能的。pyx文件被cython化后,是否可以编译调试信息以便调试器介入?如果无法实现,有哪些替代方案(除了不使用cython!)?由于这个问题专门问如何单步进入cython代码,虽然它类似

python - float64 到 float32 Cython 错误

我已经创建了一个Cython代码来在密集矩阵和稀疏向量之间进行矩阵运算,如下所示(因为我正在学习Cython,我不确定这是一个好的代码,但这是我能想到的最好的代码到目前为止):importnumpyasnpcimportnumpyasnpctypedefnp.float64_tdtype_tctypedefnp.int32_tdtypei_tcimportcython@cython.boundscheck(False)@cython.wraparound(False)@cython.nonecheck(False)defcdenseXsparse(np.ndarray[dtype_t,

python - 如何使用Cython创建stand dll

我有一个Python脚本,我将脚本重命名为.pyx文件。我想将这段代码编译成一个标准的dll文件。我在thisdocument中看到Cython将创建一个dll文件,但我只得到一个pyd。我有mingw并尝试使用命令pythonsetup.pybuild--compiler=mingw32来编译脚本我的代码(只是一个helloworld):definit():return"helloworld"有什么想法吗?谢谢 最佳答案 所以首先要做的是重命名文件到helloworld.pyx。现在我们需要制作setup.py,就像一个pytho

python - Numba 与 Cython 循环优化

考虑以下四个函数(python、numba、cython和smart),它们计算相同的响应当给出相同的整数输入时defpython(n):total=0forminrange(1,n+1):total+=mreturntotalfromnumbaimportjitnumba=jit(python)cpdefintcython(intn):cdefinttotal=0cdefintmforminrange(1,n+1):total+=mreturntotaldefsmart(n):returnn*(n+1)//2为他们的执行安排时间我有点惊讶地发现numba的运行时独立于n(而cytho

python - Cython:对于 i 来自 1 <= i < N

我在学习Cython并遇到了这段代码:importnumpyasnpcimportnumpyasnpdefmean(np.ndarray[np.double_t]input):cdefnp.double_tcur#Py_ssize_tisnumpy'sindextypecdefPy_ssize_ticdefPy_ssize_tN=len(input)forifrom0显然,这会返回a的平均值,即2.5。我的问题是:for循环是Python循环、Cython还是C? 最佳答案 编译并查看:Cython生成的C代码带有很好的注释。/*"