运行多个python脚本和多处理之间有什么区别

时间:2013-09-03 06:59:22

标签: python multithreading multiprocessing

我正考虑将多处理添加到我的一个脚本中 提高绩效。

没什么特别的,主方法有1-2个参数。

运行四个克隆的相同脚本是否有任何问题 在终端上实际上将多处理添加到python代码中?

前四个核心:

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

我读过linux / unix os会自动划分 可用核心中的程序。

对不起,如果我上面提到的^东西是完全错误的。上面没有任何东西 正式学习,这只是所有在线资料。

2 个答案:

答案 0 :(得分:3)

我认为,Martijn Pieters的评论在头上打了一针。如果你的每个进程只消耗少量的内存(这样你就可以轻松地让所有四个进程并行运行而不会耗尽RAM),并且如果你的进程不需要相互通信,那么最简单的方法是启动所有四个进程如你所知,从shell独立地处理。

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

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

答案 1 :(得分:1)

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

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