草庐IT

cythonized

全部标签

python - 如何在 Pandas 中调试 Cython 代码?

我已经下载了Pandas源代码,现在正在尝试调试它。我修改了Makefile:sparse:pandas/src/sparse.pyxpython-dbgsetup.pybuild_ext--inplace--pyrex-gdbbuild:clean_pycpython-dbgsetup.pybuild_ext--inplace--pyrex-gdbdevelop:build-python-dbgsetup.pydevelop--pyrex-gdb我还有一个非常简单的脚本:fromnumpyimportasarrayfrompandasimportalgosv=[4171.0,0.0]

python - Cython: Segmentation Fault Using API Embedding Cython to C 语言

我正尝试在O'reillyCythonbook之后将Cython代码嵌入到C中第8章。我在Cython的documentation上找到了这一段但还是不知道该怎么办:IftheCcodewantingtousethesefunctionsispartofmorethanonesharedlibraryorexecutable,thenimport_modulename()functionneedstobecalledineachofthesharedlibrarieswhichusethesefunctions.Ifyoucrashwithasegmentationfault(SIGS

python - Cython 静态链接与 python 运行时?

我有一个python2.7的Python脚本,这样说:print("HelloWorld!")接下来,我使用以下方法将其转换为C:pythoncython.py--embedhelloworld.py然后我尝试静态编译它:gcc-IC:\Python27\include-LC:\Python27\libshelloworld.c-Wl,-Bstatic-lpython27-Wl,-Bdynamic但是gcc只是创建了一个使用python27.dll运行时的二进制文件。如何创建静态链接到运行时的二进制文件? 最佳答案 如果您在Linu

python - Cython Memoryviews——来自结构数组?

我想用尽可能少的副本快速填充从C递增接收的一长串结构。如果我的结构只有主要数据类型,如下所示:cdefpackedstructoh_hi:intluckycharunlucky然后下面的工作正常:DEFMAXPOWER=1000000cdefoh_hi*hi2u=malloc(sizeof(oh_hi)*MAXPOWER)cdefoh_hi[:]hi2me=hi2u但是一旦我改变我的结构来保存一个字符数组:cdefpackedstructoh_hi:intluckycharunlucky[10]之前的memoryview转换编译但运行时给出:ValueError:Expected1di

python - 在 cython 中创建小数组需要大量时间

当我遇到这个非常奇怪的行为时,我正在为numpy编写一个新的随机数生成器,它根据任意分布生成随机数:这是test.pyx#cython:boundscheck=False#cython:wraparound=FalseimportnumpyasnpcimportnumpyasnpcimportcythondefBareBones(np.ndarray[double,ndim=1]a,np.ndarray[double,ndim=1]u,r):returnudefUntypedWithLoop(a,u,r):cdefinti,j=0foriinrange(u.shape[0]):j+=i

python - 加速 Python/Cython 循环。

我试图让python中的循环尽可能快地运行。所以我深入研究了NumPy和Cython。这是原始的Python代码:defcalculate_bsf_u_loop(uvel,dy,dz):"""Calculatebarotropicstreamfunctionfromzonalvelocityuvel(t,z,y,x)dy(y,x)dz(t,z,y,x)bsf(t,y,x)"""nt=uvel.shape[0]nz=uvel.shape[1]ny=uvel.shape[2]nx=uvel.shape[3]bsf=np.zeros((nt,ny,nx))forjninrange(0,nt)

python - 使用 cython 创建包,这样用户就可以在没有安装 cython 的情况下安装它

我有一个问题。我想分发我的cython驱动的包,但我看不到在setup.py中构建它们的简单方法。我希望setup.py能够:最重要的是:在没有cython的情况下安装我的包(从预先生成的C文件或通过预先安装cython)在sdist上重建(运行cythonize)包不需要硬编码我的cython模块列表(只需使用glob或其他东西)能够在没有.c文件(不应存储在git中)或.pyx(可能不会分发)的情况下工作。当然,至少其中一套会一直存在。目前在我痒痒的包里,我正在使用这个相当复杂的代码:importosfromglobimportglobfromdistutils.command.b

python - 如何在 Cython 中创建固定长度、可变的 Python 对象数组?

我需要一个python对象数组来创建一个trie数据结构。我需要一个像元组一样固定长度、像列表一样可变的结构。我不想使用列表,因为我希望能够确保列表的大小完全正确(如果它开始分配额外的元素,内存开销可能会很快增加,因为trie变得更大)。有没有办法做到这一点?我尝试创建一个对象数组:cdefclassTrieNode:cdefobjectmembers[32]...但这给出了一个错误:ErrorcompilingCythonfile:------------------------------------------------------------...cdefclassTrieN

python - Cython 中的 numpy "type identifiers"和 "types"有什么区别?

令人困惑的是,如果你想创建一个你使用的数组chunk=np.array([[94.,3.],[44.,4.]],dtype=np.float64)但是如果你想在buffer中定义类型引用,你用cdeffunc1(np.ndarray[np.float64_t,ndim=2]A):printA注意np.float64之间的区别和np.float64_t.我的猜测我猜typeidentifier是用类CythonC显式创建的typedef句法ctypedefnp.float64_tdtype_t但是numpytype只是Python类型。>>>type(np.float64)关于dtype

python - 在 cython 中声明 numpy 数组和 c 指针

在我的代码中,我通常使用numpy数组来连接方法和类。优化我程序的核心部分,我将cython与那些numpy数组的c指针一起使用。不幸的是,我目前声明数组的方式很长。例如,假设我有一个方法应该返回一个numpy数组someArrayNumpy,但在函数指针*someArrayPointers中应该使用速度。这就是我通常声明的方式:cdef:numpy.ndarraysomeArrayNumpy=numpy.zeros(someArraySize)numpy.ndarray[numpy.double_t,ndim=1]someArrayBuff=someArrayNumpydouble*