运行多个Python脚本和多进程之间有什么区别?

4
我考虑将多进程添加到我的一个脚本中以提高性能。
这并不复杂,主方法只有1-2个参数。
在终端上克隆四个相同的脚本运行,与实际将多进程添加到Python代码中是否有任何问题?
例如,对于四个核心:
~$ script.py & 
   script.py &
   script.py &
   script.py;

我读到过Linux/Unix操作系统自动将程序分配给可用核心的说法。如果我上面提到的内容完全错误,请见谅。这些都是从网络上了解到的,没有正式学习过相关知识。

3
现在想象一下这四个脚本相互通信以共享数据,或者这四个进程将需要多少内存。 - Martijn Pieters
如果没有必要进行通信怎么办?例如,我有一个使用Selenium访问不同网站、登录并获取特定数据的Python脚本。现在,用于获取和解析数据的代码可以在几乎不需要修改的情况下用于不同的网站。我使用带有原始多进程库的Python和Selenium进行导航。在这种情况下,问题的提出会如何表现? - mandar munagekar
2个回答

5
Martijn Pieters的评论非常中肯,如果每个进程只消耗少量内存(这样你就可以轻松地同时运行所有四个进程而不会出现RAM不足的情况),并且如果你的进程不需要相互通信,那么从shell独立启动所有四个进程是最简单的方法。
如果您有稍微复杂的需求,Python的multiprocessing模块非常有用。例如,您可能有一个程序需要在启动时串行运行,然后为更加计算密集的部分生成多个副本,最后再串行进行一些后处理。multiprocessing将对此类同步非常有帮助。
或者,您的程序可能需要大量的内存(也许是为了在科学计算中存储一个大矩阵,或在Web编程中存储一个大型数据库)。使用multiprocessing,您可以在不同的进程之间共享该对象,以便您不必在内存中拥有n个数据副本(使用multiprocessing.Value和multiprocessing.Array对象)。

1

如果你想在仅有4个核心的情况下运行脚本100次,使用multiprocessing可能是更好的解决方案。那么基于终端的方法就会变得非常麻烦。

在这种情况下,你可能想要使用multiprocessing模块中的Pool


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接