Python heapq - Python和C实现?使用哪一个?

时间:2015-03-24 22:23:34

标签: python

我正在浏览Python源代码,并注意到heapq的{​​{3}}以及C implementation。为什么两者兼而有之?当我从CPython import heapq时使用哪一个?

1 个答案:

答案 0 :(得分:6)

import heapq导入Python实现。您可以通过检查交互式解释器中heapq的值来确认:

In [20]: import heapq

In [21]: heapq
Out[21]: <module 'heapq' from '/usr/lib/python2.7/heapq.pyc'>

heapq.pycheapq.py模块的字节编译版本。

但是,inside the heapq.py file是:

# If available, use C implementation
try:
    from _heapq import *
except ImportError:
    pass

_heapqmodule.c提供了_heapq模块。因此,如果C实现可用,import heapq将使用C实现。