对于一个类,我为一个数值问题编写了一个求解器。我的代码在IPython笔记本中运行,其中大部分代码是纯Python+NumPy+matplotlib,但性能关键部分是用Cython编写的(并包含在IPython%%cython魔法中)。教授喜欢我的解决方案,并要求我将其提供给一些本科生,他将在另一个类上教授类似主题作为引用资料。问题是,我不确定什么是分发我的代码的最佳方式。我的主要问题是,大多数学生可能运行Windows。上次我在Windows上编译Cython代码是一场噩梦,因为您将不得不使用几个不同的C编译器,直到找到一个可用的编译器。绝对不能指望每个想要运行我的笔记本以获得工作C
考虑一个维度为NxM的numpy数组A。目标是计算欧氏距离矩阵D,其中每个元素D[i,j]是行i和j之间的欧氏距离。最快的方法是什么?这不完全是我需要解决的问题,但它是我正在尝试做的事情的一个很好的例子(一般来说,可以使用其他距离度量)。这是迄今为止我能想到的最快速度:n=A.shape[0]D=np.empty((n,n))foriinrange(n):D[i]=np.sqrt(np.square(A-A[i]).sum(1))但这是最快的方法吗?我主要关心for循环。我们可以用Cython来打败它吗?为了避免循环,我尝试使用广播,并执行如下操作:D=np.sqrt(np.squar
此代码包含cython类:cdefclassBench:cdeflongndef__cinit__(self,longn):self.n=ncpdefintfactors(self):n=self.ncdefintfac=0cdefunsignedlongiforiinrange(2,n):ifn%i==0:fac+=1returnfacif__name__=="__main__":print"hw"在编译为python扩展后我这样调用它:fromtimeimporttimet1=time()importfactors_classben=factors_class.Bench(1000
我正在尝试遵循ContinuumAnalyticsblog上给出的示例对Python、Cython、Numba进行基准测试以获得使用for循环计算的总和。不幸的是,我发现Cython比Python慢!这是我的Python函数定义:defpython_sum(y):N=len(y)x=y[0]foriinxrange(1,N):x+=y[i]returnx现在我的Cython函数:defcython_sum(int[:]y):cdefintN=y.shape[0]cdefintx=y[0]cdefintiforiinxrange(1,N):x+=y[i]returnx现在我有一个脚本可以
我正在尝试将我的Python/Numpy代码转换为Cython代码以达到加速目的。然而,Cython比Python/Numpy代码慢得多(3-4倍)。我是否正确使用了Cython?我是否在我的Cython代码中正确地将参数传递给myc_rb_etc()?当我调用集成功能时怎么办?预先感谢您的帮助。这是我的Python/Numpy代码:frompylabimport*importpylabasplfromnumpyimport*importnumpyasnpfromscipyimportintegratedefmyc_rb_e2f(y,t,k,d):M=y[0]E=y[1]CD=y[2]
我正在尝试设置一个工作流,以便在Windows764位上使用Cython和MinGW从Python3.5.1代码生成.pyd和.exe文件。我有一个简单的example.py文件:defhello(x):print("Hello",x)if__name__=='__main__':hello("World!")从SO上的其他线程,我得到了下面的Cython命令,它生成一个没有警告的.c文件。cython--embed-oexample.cexample.py当我调用gcc时,我收到以下警告并且不太清楚这些是否严重。gcc-c-IC:\Python35\include-oexample.
按照此处的示例“Augementing.pxd”,我正在尝试使用“.pxd”文件来扩充纯Python文件。(在纯python文件外部添加类型定义)。python文件:classA(object):deffoo(self,i=3,x=None):print"Big"ifi>1000else"Small"pxd文件:cdefclassA:cpdeffoo(self,inti,x)我有一本字典,我在python中默认为“无”。不幸的是,cython不喜欢这样。如果我使用我的“纯”python文件,没有声明类型或在pxd文件中将类型声明为“dict”,我得到错误:"Signaturenotco
我刚刚在新安装的MacOS上通过home-brew安装了pip和Python。首先,我的pip根本没有安装依赖项——这迫使我重新运行“pipinstalltables”3次,每次它都会告诉我一个依赖项,我会安装它,然后再次运行它。这是预期的行为吗?其次,它不接受刚才自己安装的Cython安装:$pipshowcython---Name:CythonVersion:0.21Location:/usr/local/lib/python2.7/site-packagesRequires:但是$pipinstalltablesDownloading/unpackingtablesDownloa
我一直在使用Cython将我的Python文件编译成C文件,然后使用MinGW从C文件创建可执行文件。Cython工作正常,我可以在命令行中键入cythontest.pyx并获取C文件。问题是当我试图从C文件编译可执行文件时。如果我输入gcctest.c,我会收到以下错误:test.c:4:20:fatalerror:Python.h:Nosuchfileordirectory#include"Python.h"^compilationterminated.我非常感谢您的帮助。我正在运行Windows7和Python3.5。 最佳答案
通过编写遗传编程类型的应用程序,我从学习Python中获得了很多乐趣。在这个网站上,我从TorstenMarek、PaulHankin和AlexMartelli那里得到了一些很好的建议。程序有4个主要功能:(随机地)生成一个表达式树。评估树的适应度杂交变异作为生成、杂交和变异的所有调用“评估适应性”。它是最繁忙的功能,也是速度方面的主要瓶颈。正如遗传算法的本质一样,它必须搜索巨大的解空间,所以越快越好。我想加快这些功能中的每一个。我将从健康评估器开始。我的问题是最好的方法是什么。我一直在研究cython、ctypes和“链接和嵌入”。它们对我来说都是新的,而且目前完全超出了我的能力范围