93

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

4

3 回答 3

122

subprocess模块允许您运行和控制其他程序。任何可以从计算机上的命令行开始的东西,都可以通过这个模块运行和控制。使用它来将外部程序集成到您的 Python 代码中。

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

于 2012-11-28T14:15:17.393 回答
43

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

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

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

于 2012-11-28T14:06:26.030 回答
19

子进程产生新进程,但除了标准输入/标准输出和其他程序可能实现的任何其他 API 之外,您无法与它们通信。它的主要目的是启动与您自己的程序完全分离的进程。

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

于 2012-11-28T14:07:21.170 回答