如何知道CPython的哪个部分是用C实现的?

2024-09-30 01:25:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 函数代码标准cpython比用
2条回答

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函数(python3)是用C实现的,由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(Python2))实现,有些模块完全用C实现(例如itertools),有些模块部分用C实现(例如collections)。你知道吗

幸运的是,CPython源代码可以在GitHub找到,但它仍然需要查看^{}文件夹来检查是否有Python实现。如果没有Python实现,几乎可以肯定它是完全用C编写的,但是如果有.py文件(或子文件夹),您仍然需要检查导入的内容。例如^{}^{}导入(并重写)很多东西,这是用C实现的

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

您可以阅读标准库的源代码。你知道吗

Python Modules

C modules

或者,您可能应该做的是,测量代码的性能,然后基于此采取行动。你知道吗

相关问题 更多 >

    热门问题