草庐IT

cythonized

全部标签

python - 在 Cython 中制作可执行文件

一直在玩cython。通常使用Python编程,但在前世使用过C。我不知道如何制作独立的可执行文件。我已经下载了cython,我可以制作一个.pyx文件(这只是一个带有.pyx扩展名的普通Python文件),它在Pythonshell中执行,使用:导入pyximport;pyximport.install()我可以在命令行生成一个.c文件:cythonfile.pyx我可以通过构建标准setup.py并执行来生成.so文件:setup.pybuild_ext--inplace我尝试使用带有各种选项的gcc从.so文件中制作可执行文件,但总是有大量丢失的文件、头文件等。我尝试从几乎所有地

python - 如何使用 pyximport 以交互方式重新加载 cython 模块

在编写python代码时,我的典型工作流程是使用交互式提示并执行类似的操作writefunctionrepeatuntilworking:testfunctioneditfunction一旦我确定一切正常,我将以非交互模式运行代码并收集结果。有时函数运行速度有点慢,必须进行优化。我有兴趣使用cython来优化这些慢速函数,但我想保留我的交互式工作流程,即运行函数、进行更改、再次运行它们。有没有简单的方法可以做到这一点?到目前为止,我已经尝试将我的cython函数放在单独的模块“my_functions.pyx”中:deffun1(intx):returnx+130deffun2(int

python - Cython:键入的内存 View 是键入 numpy 数组的现代方式吗?

假设我想将一个numpy数组传递给cdef函数:cdefdoublemysum(double[:]arr):cdefintn=len(arr)cdefdoubleresult=0foriinrange(n):result=result+arr[i]returnresult这是处理输入numpy数组的现代方法吗?比较一下这个问题:cython/numpytypeofanarray如果我想执行以下操作怎么办:cdefdouble[:]mydifference(inta,intb):cdefdouble[:]arr_a=np.arange(a)cdefdouble[:]arr_b=np.ar

python - Cython 没有速度提升

我正在尝试定义一个包含用于模拟积分的内部循环的函数。问题是速度。在我的机器上评估一次函数可能需要30秒。由于我的最终目标是最小化这个函数,所以一些额外的速度会很好。因此,我试图让Cython工作,但我一定犯了一个严重的错误(可能很多!)。按照Cython文档,我尝试输入我的变量。这样做之后,代码和纯Python一样慢。这看起来很奇怪。这是我的代码:importnumpyasnpcimportcythoncimportnumpyasnpimportminuitdata=np.genfromtxt('q6data.csv',usecols=np.arange(1,24,1),delimit

python - 通过 Cython 将 numpy 数组传递和返回给 C++ 方法

在这个网站上有很多关于在cython中使用numpy的问题,一个特别有用的问题是SimplewrappingofCcodewithcython.但是,cython/numpy接口(interface)apiseemstohavechangedabit,尤其是确保内存连续数组的传递。在cython中编写包装函数的最佳方法是:采用可能但不一定连续的numpy数组调用带有签名double*data_in,double*data_out的C++类方法返回该方法写入的double*的numpy数组?我的尝试如下:cimportnumpyasnpimportnumpyasnp#assuggeste

python - 使用 C 扩展或 Cython 优化非平凡 Python 应用程序的教程

Python社区发布了有用的引用资料,展示了如何分析Python代码,以及C或Cython中Python扩展的技术细节。.我仍在寻找教程,但是,对于非平凡的Python程序,以下内容:如何通过转换为C扩展来识别将从优化中受益的热点同样重要的是,如何识别将从转换为C扩展程序中受益的热点最后,如何进行从Python到C的适当转换,无论是使用PythonC-API还是(甚至可能更好)使用Cython。一个好的教程会为读者提供一个方法论,告诉他们如何通过一个完整的例子来推理优化问题。我没有成功找到这样的资源。你知道(或者你写过)这样的教程吗?为了澄清起见,我对仅涵盖以下内容的教程不感兴趣:使用

python - cython 中 np.int、np.int_、int 和 np.int_t 之间的区别?

我对这么多int有点挣扎cython中的数据类型。np.int,np.int_,np.int_t,int我猜int在纯python中相当于np.int_,那么np.int在哪里来自?我无法从numpy中找到文档?还有,为什么np.int_存在,因为我们已经有了int?在cython中,我猜int用作cdefint时变为C类型或ndarray[int],当用作int()时它仍然是python脚轮?是np.int_相当于long在C?所以cdeflong与cdefnp.int_相同?什么情况下应该使用np.int_t而不是np.int?例如cdefnp.int_t,ndarray[np.i

python - 在 Django 中使用 Cython。是否有意义?

是否可以优化在Django中使用Cython开发的关键任务应用程序的速度?最近我在互联网上读到,Cython可以像速度一样将Python代码转换为C。这对Django可行吗? 最佳答案 IsitpossibletooptimizespeedofamissioncriticalapplicationdevelopedinDjangowithCython这是值得怀疑的。Web应用程序的大部分响应时间是必须单独下载的非HTML元素。通常的经验法则是每个HTML页面有8个静态文件。(.CSS、.JS、图片等)由于这些静态内容都不是来自Dja

python - Cython 中的复数

在Cython中处理复数的正确方法是什么?我想使用dtypenp.complex128的numpy.ndarray编写一个纯C循环。在Cython中,关联的C类型定义在Cython/Includes/numpy/__init__.pxd作为ctypedefdoublecomplexcomplex128_t所以看起来这只是一个简单的C双复合体。但是,很容易获得奇怪的行为。特别是,有了这些定义cimportnumpyasnpimportnumpyasnpnp.import_array()cdefexternfrom"complex.h":passcdef:np.complex128_tva

python - 用 cython 简单包装 C 代码

我有许多C函数,我想从python调用它们。cython似乎是要走的路,但我真的找不到一个例子来说明这是如何完成的。我的C函数如下所示:voidcalculate_daily(char*db_name,intgrid_id,intyear,double*dtmp,double*dtmn,double*dtmx,double*dprec,double*ddtr,double*dayl,double*dpet,double*dpar);我要做的就是指定前三个参数(一个字符串和两个整数),并恢复8个numpy数组(或python列表。所有double组都有N个元素)。我的代码假定指针指向已分