问题标签 [cython]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
963 浏览

python - 在 OS X 上安装 Python 扩展,缺少 MacOSX10.4u.sdk 错误

我正在尝试使用 python.org python (Python 2.6.4 (r264:75821M, Oct 27 2009, 19:48:32)) 在 OS X (10.6.4) 上安装各种 python 扩展。在 gcc 步骤中始终遇到问题。这是编译 Cython 的示例(顺便说一句,我正在尝试安装 Cython 以安装 lxml):

尝试以各种方式安装 lxml 时出现类似错误。我已经尝试了Simon's question中的成功秘诀,以及来自 lxml 站点的安装说明,它们最终都遇到了同样的问题。

我真的需要安装旧的 OS X SDK 吗?如果是这样,我在哪里可以找到它(搜索似乎没有找到任何官方下载位置)。

还是有不需要旧 SDK 的更好的解决方法?

0 投票
1 回答
1254 浏览

python - 如何纠正此 Damerau-Levenshtein 实现中的错误?

我带着另一个冗长的问题回来了。在尝试了许多基于 Python 的 Damerau-Levenshtein 编辑距离实现后,我终于找到了下面列出editdistance_reference(). 它似乎提供了正确的结果,并且似乎有一个有效的实施。

所以我开始着手将代码转换为 Cython。在我的测试数据中,参考方法能够提供 11,000 次比较的结果(对于 12 个字母长的词对),而 Cythonized 方法每秒进行超过 200,000 次比较。可悲的是,结果不正确:当您查看thisrow 我打印出来进行调试的变量时,无论我向其输入什么数据,我的版本都充满了变量,而参考输出显示了另一张图片。例如,测试'helo'产生'world' 以下输出(ED标记我的函数,EDR是正确工作的参考):

来自editdistance()

来自editdistance_reference()

我一定很愚蠢,因为错误可能是那些非常明显的事情之一。但我似乎找不到它。

还有第二个问题:三个数组、、 和malloc的 i 空间,然后它们以循环方式交换。当我尝试等等时,我得到一条 glibc 抱怨的行。我用谷歌搜索过;会不会是指针交换业务让 glibc 有点头晕,从而无法正确释放内存?twoagooneagothisrowfree( twoago )double free or corruption

下面我首先列出setup.py进行编译所需的内容(/path/to/python3.1 ./setup.py build_ext --inplace),然后是适当的编辑距离代码,因此有兴趣的人会发现它更容易复制。

还有一件事:这是用 Python3.1 运行的;一件有趣的事情是,在*.pyx文件内部我们确实有裸 unicode 字符串,但print它仍然是一个语句,而不是一个函数。

是的,我知道这里有很多代码要粘贴,但问题是,当你把它剪得太多时,代码根本无法运行。我相信除了editdistance()正常工作之外的所有方法,但请随时指出您发现的任何问题。

setup.py

cython_dameraulevenshtein.pyx(一直滚动到最后,看看有趣的东西):

编辑我还将此文本发布到pastebin和 Cython 列表。

0 投票
6 回答
16477 浏览

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

是否可以使用 Cython 优化在 Django 中开发的关键任务应用程序的速度?

最近我在网上看到,Cython 可以将 Python 代码转换为 C 一样的速度。Django可以做到这一点吗?

0 投票
2 回答
2597 浏览

python - 带有 Cython 的条件 `ctypedef`

我需要从我正在编写的一些包装代码中访问uint64_ttypedef,stdint.h但我不知道如何完成它。问题是,从我从文档中可以看出,我ctypedef必须采用以下形式:

或者

取决于WORDSIZEfrombits/wordsize.h是 64 还是 32。我无法找出如何从 Cython 访问这个预处理器定义,如果可以的话,Cython 似乎不喜欢ctypedef语句中的if语句以及当我尝试放入块中的if语句cdef,似乎将其与声明混淆。有任何想法吗?希望我只是在这里遗漏了一些非常基本的东西。

0 投票
3 回答
1049 浏览

python - 高效且经济地运行 python 程序的多个实例?

我编写了一个程序,该程序调用具有以下原型的函数:

我的目标是以最快和最经济的方式准确地运行这个函数 10,000 次(对于 10,000 个不同的 'n' 值)。在这些运行之后,我将拥有 10,000 个不同的二进制文件,其中包含所有单独扫描的结果。请注意,每个函数“运行”都是独立的(这意味着各个运行之间没有任何依赖关系)。

所以问题是这样的。家里只有一台电脑,很明显我需要大约 4.5 年(10,000 次运行 x 每次运行 4 小时 = 40,000 小时 ~= 4.5 年)才能完成所有在家运行。然而,我希望在一两周内完成所有的运行。

我知道解决方案将涉及一次访问许多计算资源。最好的(最快/最实惠,因为我的预算有限)的方法是什么?我必须买一个强大的服务器(它会花多少钱?)或者我可以让这个在线运行吗?在这种情况下,这样做是否会暴露我的专有代码?

如果有帮助,'Process()' 的每个实例只需要大约 500MB 的内存。谢谢。

0 投票
2 回答
259 浏览

python - 计算密集型应用程序的服务器成本?

我有一个用 Python 构建的科学应用程序(应用程序的“关键区域”使用 Cython 进行了优化,以提高速度)。

应用程序的每个实例都有一个文本文件(带有参数)和一个输入。应用程序从文本文件中读取参数,并使用存储在硬盘驱动器中的数据,运行并将计算结果输出回硬盘驱动器。每个实例在其运行过程中需要大约 600MB 的内存。

目前,我正在笔记本电脑(Intel Core 2 Duo、T7500、@2.2Ghz、2GB RAM)上运行该应用程序。我的笔记本电脑上的每个“实例运行”大约需要 3 个小时才能完成。

由于项目的需要,我需要运行10000个实例。显然,在我的笔记本电脑上这样做需要很长时间,因此需要更多的计算能力。

知道每个这样的实例都独立于另一个实例,那么可以同时运行 10 个实例的服务器的成本是多少(我有预算......)?你能推荐一个配置吗?

目前,我使用的是 Windows XP,但理想情况下,我很乐意在服务器上安装 unix (ubuntu)。

0 投票
2 回答
551 浏览

opengl - glFlush() 如何影响渲染的正确性?

在注意到其他 OpenGL 程序中存在意外的人工制品后,我进行了一些挖掘,发现您可以在 Ubuntu 上升级 OpenGL 堆栈: https ://launchpad.net/~xorg-edgers/+archive/ppa

更新后,所有 GL 渲染都更快(我下面的测试程序 速度提高了一倍!)并且没有伪影。

所以回答我自己的问题: glFlush() 如何影响渲染正确性?当驱动程序有问题时。

===原始问题===

或者,更准确地说,我的经典不流行的非着色器 VBO 东西的根本错误是什么?

如果在每个立方体或线框之后刷新,我会得到这个正确的渲染: 正确,带冲洗

如果我省略了刷新——而且我显然不想刷新,即使我没有采用最佳的 opengl 路径——那么我会得到这个不正确的渲染,这是我不明白的错误: 不正确,没有冲洗

对于好奇的,这里是如何glutSolidCube和电线做到这一点:http://www.google.com/codesearch/p?hl=en#xbii4fg5bFw/trunk/FDS/trunk/SMV_5/source/glut-3.7.6/glut_shapes。 c&q=glutSolidCube%20lang:c&sa=N&cd=4&ct=rc

0 投票
1 回答
1158 浏览

python - Convert ascii encoding to int and back again in python (quickly)

I have a file format (fastq format) that encodes a string of integers as a string where each integer is represented by an ascii code with an offset. Unfortunately, there are two encodings in common use, one with an offset of 33 and the other with an offset of 64. I typically have several 100 million strings of length 80-150 to convert from one offset to the other. The simplest code that I could come up with for doing this type of thing is:

This works just fine, but it is not particularly fast. For 1 million strings, it takes about 4 seconds on my machine. If I change to using a couple of dicts to do the translation, I can get this down to about 2 seconds.

If I blindly run under cython, I get it down to just under 1 second.
It seems like at the C-level, this is simply a cast to int, subtract, and then cast to char. I haven't written this up, but I'm guessing it is quite a bit faster. Any hints including how to better code a this in python or even a cython version to do this would be quite helpful.

Thanks,

Sean

0 投票
2 回答
2419 浏览

conditional - Cython 基于外部值的条件编译

我尝试从 Cython pxd 有条件地编译(或生成)c 代码。我读到我可以 DEF 定义 aa 值和 IF 根据其值有条件地生成,但是我怎样才能从 pxd 文件外部获取此值?

具体来说,这两个案例现在对我来说很有趣:

  • 给 Cython 一些命令行定义,最好通过 Cython.Distutils setuptools 方式
  • extern-ed C 头文件定义了一些值,并根据该值有条件地使用 Cython 定义(现在可能不可能?)

谢谢

0 投票
1 回答
2807 浏览

python - 使用 cython .pxd 文件来扩充纯 python 文件

按照此处的示例“ Augementing .pxd ”,我正在尝试使用“.pxd”文件来增强纯 python 文件。(在纯 python 文件之外添加类型定义)。

蟒蛇文件:

pxd 文件:

我有一本字典,我在 python 中默认为“无”。不幸的是,cython 不喜欢这样。

如果我使用我的“纯”python 文件,而不在 pxd 文件中声明类型或将类型声明为“dict”,我会收到错误消息:

“签名与之前的声明不符”

我注意到如果我不指定默认值,它将编译,但声明默认值是有原因的。

有没有办法处理这个问题?