如何知道CPython的哪一部分是用C实现的?
CPython标准库中用C编写的部分比用Python实现的部分要快。为了优化代码,最好使用用C实现的函数。我的问题是,您如何确定或知道标准库的哪些部分是用C实现的 我的问题是,您如何确定或了解用C实现的标准库的哪些部分 您可以阅读标准库的源代码 或者,您可能应该做的是测量代码的性能,然后基于此采取行动 我的问题是,您如何确定或了解用C实现的标准库的哪些部分 您可以阅读标准库的源代码 或者,您可能应该做的是测量代码的性能,然后基于此采取行动 CPython标准库中用C编写的部分比用Python实现的部分要快。为了优化代码,最好使用C语言中的函数和实现 虽然这是正确的,但这只是故事的一半。所有内置函数都是用C实现的,很多标准库模块全部或部分都是用C实现的,所以所有东西都已经使用了C函数 例如,如何知道CPython的哪一部分是用C实现的?,python,c,optimization,cpython,Python,C,Optimization,Cpython,CPython标准库中用C编写的部分比用Python实现的部分要快。为了优化代码,最好使用用C实现的函数。我的问题是,您如何确定或知道标准库的哪些部分是用C实现的 我的问题是,您如何确定或了解用C实现的标准库的哪些部分 您可以阅读标准库的源代码 或者,您可能应该做的是测量代码的性能,然后基于此采取行动 我的问题是,您如何确定或了解用C实现的标准库的哪些部分 您可以阅读标准库的源代码 或者,您可能应该做的是测量代码的性能,然后基于此采取行动 CPython标准库中用C编写的部分比用Pyth
collections.Counter
是一个纯Python类,但是collections.\u count\u elements
函数(Python3)是用C实现的,由Counter
使用,因此它可以“更快地计数”。但是使计数器成为C函数
因此,这不是一件明确的事情,您不应该期望Python部分一定(远)比用C实现慢。同样,“用C编写”或“用Python编写”也是一种实现细节。因此,现在用Python编写的代码可以在将来的版本中重新实现为C函数(可能也会反过来,但这种情况发生的频率较低,或者根本不会发生)
如何确定或了解用C实现的标准库的哪些部分
你必须亲自调查。有些模块可以使用C实现和Python实现(例如StringIO
与cStringIO
(Python2)),而其他模块则完全用C实现(例如itertools
),其他模块则部分用C实现(例如collections
)
幸运的是,CPython源代码可以在上找到,但仍然需要查看文件夹以检查是否有Python实现。如果没有Python实现,几乎可以肯定它完全是用C编写的,但是如果有.py
文件(或子文件夹),您仍然需要检查导入的内容。例如,导入(和重写)许多在C中实现的东西
CPython标准库中用C编写的部分比用Python实现的部分要快。为了优化代码,最好使用C语言中的函数和实现
虽然这是正确的,但这只是故事的一半。所有内置函数都是用C实现的,很多标准库模块全部或部分都是用C实现的,所以所有东西都已经使用了C函数
例如,collections.Counter
是一个纯Python类,但是collections.\u count\u elements
函数(Python3)是用C实现的,由Counter
使用,因此它可以“更快地计数”。但是使计数器成为C函数
因此,这不是一件明确的事情,您不应该期望Python部分一定(远)比用C实现慢。同样,“用C编写”或“用Python编写”也是一种实现细节。因此,现在用Python编写的代码可以在将来的版本中重新实现为C函数(可能也会反过来,但这种情况发生的频率较低,或者根本不会发生)
如何确定或了解用C实现的标准库的哪些部分
你必须亲自调查。有些模块可以使用C实现和Python实现(例如StringIO
与cStringIO
(Python2)),而其他模块则完全用C实现(例如itertools
),其他模块则部分用C实现(例如collections
)
幸运的是,CPython源代码可以在上找到,但仍然需要查看文件夹以检查是否有Python实现。如果没有Python实现,几乎可以肯定它完全是用C编写的,但是如果有
.py
文件(或子文件夹),您仍然需要检查导入的内容。例如,通过阅读他们的文档,导入(并覆盖)许多在C中实现的东西。?我对安装的Python 2和Python 3文档非常感兴趣。他们并不总是提到某些东西是否是用C实现的?你似乎还没有看过@lilezekAnd之前的文档,如果你想用的东西没有用C实现,你会怎么做?此外,C和Python之间的差异只是一个“常量因素”(对于作为Python函数公开的函数,通常为2-3),但是正确选择算法和数据结构可能更为重要,cPickle可以比pickle快1000倍,因为前者是用C实现的。这只与python 2有关。例如,Python3中没有cPickle
,只有pickle
。默认情况下,它使用C实现(\u pickle
),如果可以找到其他实现,它将返回到python实现。通过阅读他们的文档,我对安装的python 2和python 3文档非常感兴趣。他们并不总是提到某些东西是否是用C实现的?看来你还没看一眼