问题标签 [cpython]

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 投票
3 回答
1339 浏览

python - python扩展模块初始化-多个文件

创建了一个包含许多源文件和头文件的 C 库后,我现在需要用 Python 层包装它,以便“导入”它。

我已经实现了要从 Python 调用的静态方法,我需要指定模块应该向解释器公开哪些方法。

但是,在指定可以调用的内容时,文档似乎只处理具有单个源文件的非常简单的情况,因为唯一的非静态方法必须是注册方法的 init。

据我所知,如果其他源文件中的方法在 C 中声明为静态,则不可能调用它们(如果我在那里错了,请纠正我)所以,每个 python 模块只能有一个 C 文件,因为整个过程中只允许使用一种非静态方法。

真的是这样吗?如果你想从 Python 访问它,你必须把你的代码构造得不好/根本不构造吗?

编辑:

所以,我最终得到这个工作的方式是使用Cython。重写 c/python 接口不仅需要大约一个小时(由于所有引用计数规则等原因,之前需要大约一天时间),而且它还为您处理所有构建问题,并且有清晰的文档准确描述了哪个方法将可从 python 获得。

特别是,我使用的文档章节是构建说明如何调用 C 库语言基础知识以及如何转换类型,尤其是指针

对于希望将现有的复杂结构的 C 代码(即不仅仅是一个文件)包装为 python 库的任何人,我强烈推荐 Cython。

0 投票
1 回答
261 浏览

java - 可以在使用 Jython 的 Java 程序中使用 python 模块而不进行修改吗?

是否可以使用 Jython 从 Java 中使用 Python 代码,而无需以阻止其在 CPython 中正常工作的方式修改 Python 代码?

如果是,必须采取哪些步骤(在 Java 代码中)?

如果不是,那么(到目前为止)无法做到这一点的原因是什么?

0 投票
1 回答
164 浏览

python - 与列表相比,哪些性能具有 cPython 集?

我刚刚为 cPython 列表找到了这些性能说明

python列表所需的时间......

  • ...获取或设置单个项目:O(1)
  • ... 将一个项目添加到列表中:最差 O(n^2),但通常为 O(1)
  • ...插入一个项目:O(n),其中n是插入后的元素数
  • ...删除一个项目:O(n)

现在我想知道 cPython 集的相同性能特征。另外,我想对列表/集合的迭代有多快。我对大型列表/集合特别感兴趣。

0 投票
2 回答
941 浏览

google-app-engine - 在 Google App Engine 中导入 C python 模块

我正在使用 Python 在 Google 应用引擎上开发应用程序。我想使用 Python 的 editdist 功能,因此我在我的程序中导入了 editdist C python 模块,但它显示模块 editdist 不存在。

当我为本地应用程序导入 editdist 时,它工作正常,但不适用于 Google 应用程序引擎应用程序。

任何人都可以建议我导入此模块的方法吗?

0 投票
0 回答
253 浏览

python - 如何使 easy_install.exe 不在单独的窗口中打开?

可能重复:
activepython:easy_install 作为终端启动并自行关闭,如何避免这种情况

我刚刚为 Windows 安装了 setuptools,我正在尝试使用它:

这会启动一个新的命令窗口,运行 Python 和 easy_install 脚本,并在我有机会查看输出之前快速关闭!

作为一种解决方法,我找到了可以手动运行的 easy_install-script.py。但我的问题是如何让 easy_install 不产生单独的命令窗口?(和现在一样没用)

编辑- 我已经尝试了dup question中指出的解决方案,但它不起作用。我没有使用 ActivePython,而是在 Windows 64 位下使用 cpython。这足以让这个问题保持开放吗?

0 投票
1 回答
247 浏览

python - 为什么我的 Stackless 可执行文件要小得多

我为 Stackless Python 竞赛编写了一些游戏,需要创建一个可执行文件。不过意外的是,我使用 CPython 2.6 而不是 Stackless Python 2.5 来构建可执行文件。我正确重建,发现 dist 的最终大小从略超过 30 MB 下降到大约 8。出于好奇,这是为什么呢?作为一种猜测,我会冒险这是因为我在 CPython 中安装了 Twisted 和 Qt4 之类的库,但没有在 Stackless 中,并且 Py2exe 包在所有东西中,无论它们是否被使用(可能是因为你总是可以动态调用代码),但如果有人真的知道,我会有兴趣了解原因。

0 投票
1 回答
402 浏览

python - _PyString_Resize 是否重新分配内存?

我正在开发一个 Python C 扩展模块(用于 CPython 2.5)。它调用一些填充缓冲区的底层网络 API。

目前代码基本编写如下:

据我所知,这段代码运行良好,但我想知道_PyString_Resize. 如果 sz 小于 buffer_size,它是否使用它重新分配内存的现有缓冲区?

从效率的角度来看,我可能更喜欢前者来避免缓冲区内容的无用副本,即使它消耗的内存比必要的多。另一方面,重新分配内存也可能有助于减少内存占用。

那么 _PyString_Resize 是做什么的呢?有没有一种简单的方法来控制这种行为?

0 投票
1 回答
707 浏览

python - Twisted getPage():请求大量页面时进程内存增长

我正在编写一个脚本,用于不断地(每 30-120 秒)获取查询大量 URL(Icecast/Shoutcast 服务器状态页面)的信息,大约 500 个 URL。它工作正常,但 python 进程驻留大小不断增长。我确信它会无限增长,因为我让它运行了几个小时,并且从最初的 30Mb 消耗了 1.2Gb RES。

为了便于理解,我将脚本简化为以下内容:

它的增长与原始守护程序相同,因此我定位了问题。我认为它以某种方式与 twisted.web.client.getPage() 有关。在原始守护程序中,我在运行时使用了 twisted.manhole 与 meliae 进行堆评估,但没有看到任何讨厌的东西。

仅在 1 或 2 个查询周期完成后立即进行第一次 meliae 转储:

并在那个时候达到顶峰:

现在我们稍等片刻,再次查看,这是运行 20 分钟后的画面(大约 40 个查询周期):

顶部:

根据meliae,物体数量和总大小都没有增长。但是这个进程在这 20 分钟内消耗了 200Mb 的常驻内存。

我还在 python 上使用了 valgrind,但没有发现泄漏。有什么想法吗?

我正在使用 Python 版本 2.6.6,扭曲版本 10.2.0


更新 #1:我还使用 valgrind massif 来分析 CPython 内存使用情况,这里是分配的 99.93% 内存的分配树:

0 投票
2 回答
2058 浏览

python - 占用最少的 Python?CPython?

我是 Python 新手。经过一番搜索,我发现 PyPy 具有出色的性能,但它是有代价的。它使用太多内存。

我在 Python 中寻找的是最小可能占用空间的性能。

CPython 怎么样?

(CPython benchmark inshootout.alioth.debian.org已被删除。有人说 CPython 占用空间小,但究竟有多小?)

0 投票
1 回答
493 浏览

python - 使用 Visual Studio 的 Python 工具进行 Stackless Python 开发

适用于 Visual Studio Beta的Python 工具(包括对 CPython 的支持)是否允许您在 Stackless Python 中进行开发?

如果是这样,除了在现有的 VS2010 安装上安装 PTVS 之外,您能否扩展您的答案以包括设置 Stackless Python 环境所需的任何步骤?