【问题标题】:the _subprocess module_subprocess 模块
【发布时间】:2012-04-26 01:28:46
【问题描述】:

有一个名为_subprocess 的模块,如that question 所示。

我能够导入它,但我没有找到任何关于它是什么以及它与 subprocess 有何不同的文档。

这里有人知道这个模块是做什么的吗?

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    _subprocess 似乎是一个特定于 Windows 的 C 扩展模块,它实现了 subprocess 模块所使用的一些功能。如果您查看in the source for subprocess_subprocess 仅在 if mswindows 块内部被引用。

    这是实现的细节,所以你绝对不应该在任何实际代码中使用它(当然,有些好奇从来都不是坏事)。

    Here's the source for `_subprocess'。顶部的评论说

    * support routines for subprocess module
    *
    * Currently, this extension module is only required when using the
    * subprocess module on Windows, but in the future, stubs for other
    * platforms might be added here as well.
    

    【讨论】:

      【解决方案2】:

      这是一个实现细节,存在于 Windows 上,但不存在(例如)在 Unix 系统上。你不应该使用它。

      【讨论】:

        【解决方案3】:

        与 Python 中以下划线开头的其他名称一样,此类模块通常不能直接使用。通常应该使用不带下划线的模块,例如 subprocess

        这通常用于将模块实现划分为用 C 和纯 Python 编码的部分。带下划线的模块是用 C 语言编写的,“在其之上”添加了一个纯 Python 模块以提供高级 API。

        【讨论】:

        • 这样的话,C实现应该会更快吧?
        • 它为您提供两全其美的体验。底层 C 模块速度很快,但只实现了 C 函数的薄包装。然后,Python 模块使用 pythonic API 公开它,并添加对性能不重要或可以在 Python 中更容易实现的东西。您可以直接使用底层模块,但它会更难使用,功能有限,而且 Python 模块将同样快(因为它将使用 C 模块来完成实际工作)。
        猜你喜欢
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        • 2021-07-17
        • 2010-12-04
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        • 2016-05-05
        相关资源
        最近更新 更多