3

我正在考虑将多处理添加到我的一个脚本中以提高性能。

没什么花哨的,main方法有1-2个参数。

仅在终端上运行四个克隆的相同脚本而不是在 python 代码中实际添加多处理有什么问题吗?

前四个核心:

~$ script.py & 
   script.py &
   script.py &
   script.py;

我读过 linux/unix 操作系统会自动在可用内核之间划分程序。

对不起,如果我上面提到的 ^ 东西是完全错误的。以上没有正式学习,都是网上的东西。

4

2 回答 2

5

Martijn Pieters 的评论一针见血,我想。如果您的每个进程只消耗少量内存(这样您就可以轻松地让所有四个进程并行运行而不会耗尽 RAM)并且如果您的进程不需要相互通信,那么启动所有四个进程是最简单的正如您所建议的,从外壳独立处理。

multiprocessing如果您有稍微复杂的需求,python模块非常有用。例如,您可能有一个程序需要在启动时串行运行,然后为计算密集型部分生成多个副本,最后以串行方式进行一些后处理。multiprocessing对于这种同步将是无价的。

或者,您的程序可能需要大量内存(可能在科学计算中存储大型矩阵,或在 Web 编程中存储大型数据库)。multiprocessing 让您在不同的进程之间共享该对象,这样您就不会在内存中拥有 n 个数据副本(使用multiprocessing.Valuemultiprocessing.Array对象)。

于 2013-09-03T07:35:08.197 回答
1

multiprocessing如果您想在仅 4 个内核上运行脚本 100 次,则使用也可能成为更好的解决方案。然后你的基于终端的方法会变得非常讨厌。

在这种情况下,您可能希望使用Pool模块multiprocessing中的 a。

于 2013-09-03T07:44:00.600 回答