多处理和子处理有什么区别



我的工作应该使用并行技术,我是Python的新用户。我想知道你是否可以分享一些关于 Python multiprocessingsubprocess 模块的材料。这两者有什么区别?

subprocess模块允许您运行和控制其他程序。您可以使用计算机上的命令行启动的任何内容都可以使用此模块运行和控制。使用它来将外部程序集成到您的 Python 代码中。

multiprocessing模块允许您将用 python 编写的任务划分到多个进程中,以帮助提高性能。它提供了一个与threading模块非常相似的 API;它提供了在其创建的进程之间共享数据的方法,并使管理多个进程以运行Python代码的任务(要)容易得多。换句话说,multiprocessing允许您利用多个进程,通过并行执行代码来更快地完成任务。

如果你想调用一个外部程序(特别是一个不是用Python编写的程序),请使用subprocess

如果要在子进程中调用 Python 函数,请使用 multiprocessing

(如果程序是用 Python 编写的,但也是可导入的,那么我会尝试使用 multiprocessing 调用它的函数,而不是通过 subprocess 在外部调用它。

子进程会产生新的进程,但除了stdin/stdout和其他程序可能实现的任何其他API,你没有办法与它们通信。 它的主要目的是启动与您自己的程序完全分开的进程。

多处理也会产生新的进程,但它们运行您的代码,并且旨在相互通信。 您可以使用它将自己的程序中的任务划分到多个 CPU 内核。

最新更新