问题标签 [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.
python - 用于跨平台 GUI 开发的 CPython 与 Jython 与 IronPython
我正在考虑为数字硬件设计制作某种实验性 IDE。所以我无法决定选择女巫平台。
我将拥有带有语法突出显示的文本编辑器、一些矢量图形和许多选项卡式窗口。
我的目标: 1. 使用尽可能少的自定义组件来制作 GUI。2. 使其尽可能跨平台
(我已经知道 CPython 和 Jython 是跨平台友好的,但是 IronPython+Mono 呢?)
所以 - 问题是关于 GUI - 我应该选择什么?
python - cpython 做什么来帮助检测对象循环(引用计数)?
从我读过的关于 cpython 的内容来看,它似乎确实引用计数 + 一些额外的东西来检测/释放指向彼此的对象。(如果我错了,请纠正我)。有人可以解释一下额外的东西吗?这也保证*没有循环泄漏吗?如果没有,是否有任何研究证明可以添加到引用计数以使其永不泄漏*的算法?这会只是经常运行非引用计数跟踪 gc 吗?
*折扣使用外部函数接口的模块的错误和问题
python - 为什么 id({}) == id({}) 和 id([]) == id([]) 在 CPython 中?
为什么 CPython(不知道其他 Python 实现)有以下行为?
我有一些想法为什么会这样,但找不到具体的原因。
编辑
为了进一步证明 Glenn 和 Thomas 的观点:
python - 如何在 PyCXX 中访问 numpy 数组
我想将 numpy 数组转换为 c++ 端的一些 double* 或 stl 向量。我实际上为此使用了 PyCXX,但我无法弄清楚访问数据的方法。
我目前能够像这样访问和返回数据缓冲区:
但我不知道该怎么办。我的最终目标是从中获得一个 gsl_vector。理想情况下,我不必重新复制内存。但也许问得太多了;)
python - set() 是如何实现的?
我见过有人说set
python 中的对象有 O(1) 成员资格检查。它们如何在内部实现以允许这样做?它使用什么样的数据结构?该实施还有哪些其他影响?
这里的每一个答案都很有启发性,但我只能接受一个,所以我会选择最接近我最初问题的答案。谢谢你的信息!
python - Python C 扩展不是线程安全的?
我用一个相当费力的python脚本制作了ac扩展。代码本身经过良好测试且简单。使用几个大列表调用 c 扩展,然后它执行一些巧妙的算术并返回一些新列表。c 扩展是 100% 自给自足的,它不使用任何其他 c 函数,也不使用任何 python 对象的方法(但它确实使用这些标准 Python 方法:PyFloat_AsDouble、PyList_GetItem、PyList_Size、PyList_New、Py_BuildValue、PyList_Append )。到目前为止,我只在非多线程环境中使用过它。
今天我开始在多线程 GUI 环境中使用它,结果一败涂地。我有一些用于调试的测试用例,奇怪的是,较小的可以通过,而较大的会导致总线错误和分段错误(使 GUI 完全崩溃并在 OS X 中显示“Python 问题报告”窗口) . 我的c扩展不是线程安全的问题吗?如果是这样,我怎样才能使它成为线程安全的?我试着用谷歌搜索这个主题,但我还没有真正找到任何我能理解的好信息。我检查了这个和这个页面,但我真的不明白他们在说什么。哪种类型的代码需要 GIL,哪些不需要?
这里值得一提的是转储:
python - 如何向 Python 交互式 shell 添加命令?
我试图为我在 Python 中经常键入的命令节省一些击键次数。
在我的python 启动脚本中,我定义了一个名为 load 的函数,它类似于 import,但增加了一些功能。它需要一个字符串:
为了调用这个函数,我必须输入
我宁愿能够简单地输入:
我正在运行带有readline支持的 Python,所以我知道那里存在一些可编程性,但我不知道这种事情是否可以使用它。
我试图通过InteractivConsole
在我的启动文件中使用并创建它的一个实例来解决这个问题,如下所示:
这适用于我必须按两次 Ctrl-D 才能退出 python 解释器的警告:一次退出我的自定义控制台,一次退出真正的控制台。
有没有办法在不编写自定义 C 程序并将解释器嵌入其中的情况下做到这一点?
编辑
在频道之外,我建议将其附加到我的启动文件的末尾:
它工作得很好,但我仍然对替代解决方案感兴趣。
python - OpenCV:带有 Python 接口但不在 C 版本中的内存泄漏
我在这里问是因为到目前为止我还没有从 OpenCV 开发人员那里得到任何帮助。我将问题简化为一个非常简单的测试用例,因此可能有 CPython 背景的任何人都可以在这里提供帮助。
此 C 代码不会泄漏:
此 Python 代码确实泄漏:
我搜索了 CPython 代码(OpenCVs 当前的 SVN 主干代码),发现了这个:
...
...
从 OpenCV C 头文件中:
我并不完全了解所有内容,因为我以前从未使用过 Python 的 C 接口。但可能我正在寻找的错误在这段代码中的某个地方。
我对吗?或者我应该在哪里搜索错误?我将如何解决它?
(对于看过此问题早期版本的人的注意事项:我查看了错误的代码。他们的 SWIG 接口已被弃用并且不再使用(但代码仍然存在于 SVN 中,这就是我混淆它的原因。所以不要t查看interfaces/swig
,此代码旧且未使用。当前代码位于modules/python
。)
java - 来自Java的CPython?
我需要从 Java 调用 CPython 代码。有哪些工具/API/库可以帮助我做到这一点?
Jython 不是一个选项,因为 Python 代码严重依赖于numpy
.
编辑1:main()
函数应该是Java,而不是Python(即我需要将CPython嵌入Java,反之亦然。)
编辑 2:我还应该提到,我将在 Java 和 Python 之间传递大型数字数组,因此将两者带入同一进程空间的解决方案将是可取的(但不是强制性的。)
python - CPython 作为 C 的库(从 C 执行 Python 代码)
我不是C专家,所以我问的可能很疯狂。
是否可以使用 ARM c 编译器(如 yagarto 或 arm-gcc)编译 CPython,然后从 C 应用程序调用它来处理 Python 代码行?
如果是这样,我应该查看哪些资源/文件?