我是线程和进程的新手。我一直在尝试了解asyncio
。在Doug Hellinger's Python Module of the Week section of Concurrency上研究asyncio
时,我遇到了multiprocessing
,threading
,signal
和subprocess
模块。
我一直想知道为什么这样命名subprocess
模块。为什么模块不称为进程。 “ sub”(在下文中的含义)是什么?
修改:忘记添加
有一个Popen
类,我认为'P'代表过程。
Github code comment说:
Popen(...):在新进程中灵活执行命令的类
是否不存在Popen
类,请给出更多理由来调用模块process
而不是subprocess
?
答案 0 :(得分:2)
大多数操作系统中的进程形成父子关系。由另一个进程创建的进程称为该进程的child processes or subprocesses:
计算中的子流程是由另一个创建的流程 流程(父流程)。此技术与多任务处理有关 操作系统,有时称为子进程或 传统上是子任务。
Python subprocess模块提供了创建新的子进程的功能(即,使用此模块创建的每个进程都是您的Python程序的子进程):
子流程模块允许您生成新流程,连接到 他们的输入/输出/错误管道,并获取他们的返回码。
它不处理任意进程,因此将其命名为subprocess
而不是仅仅process
是有意义的。
答案 1 :(得分:1)
子进程提供了用于创建辅助进程并与其进行通信的API。
模块名称中的“ sub”是指您将在此处开始的所有进程都是正在运行的Python进程的子进程。它们存在是为了支持您的Python代码。