gpt4 book ai didi

python - 如何知道 CPython 的哪一部分是用 C 实现的?

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:48 24 4
gpt4 key购买 nike

用 C 编写的 CPython 标准库部分比用 Python 实现的部分更快。如果要优化代码,最好使用用 C 实现的函数。我的问题是如何确定或知道标准库的部分是用 C 实现的?

最佳答案

Parts of the standard library of CPython that were written in C are faster than the parts that implemented in Python. To optimise your code, it good if you use the functions and implemented in C.

虽然这是正确的,但这只是故事的一半。所有内置函数都用 C 实现,许多标准库模块完全或部分用 C 实现。所以一切都已经使用 C 函数。

例如 collections.Counter 是一个纯 Python 类,但 collections._count_elements 函数(Python 3)是用 C 实现的,并由 Counter 以便它可以“更快地计数”。但是使 Counter 成为 C 函数?

所以这不是一个明确的事情,你不应该期望 Python 部分一定(很多)比用 C 实现的要慢。另外,“用 C 编写”或“用 Python 编写”是一种一个实现细节。因此,现在用 Python 编写的内容可以在未来的版本中重新实现为 C 函数(可能反之亦然,但这种情况发生的频率较低或根本不会发生)。

how can you determine or know the parts of the standard library that were implemented in C?

你必须自己调查。一些模块可用于 C 实现和 Python 实现(例如 StringIOcStringIO (python 2)),而其他模块完全用 C 实现(例如 itertools),其他的部分用 C 实现(例如 collections)。

幸运的是,CPython 源代码位于 GitHub。但它仍然需要查看 Lib文件夹以检查是否有 Python 实现。如果没有 Python 实现,它几乎肯定是完全用 C 编写的,但如果有 .py 文件(或在子文件夹中),您仍然需要检查那里导入的内容。例如collections_collections 导入(并覆盖)很多东西这是在 C 中实现的。

关于python - 如何知道 CPython 的哪一部分是用 C 实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46012872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com