多线程vs多进程



我正在研究一个需要搜索一个非常大的状态空间的应用程序。为了做到这一点,我已经获得了访问32核集群节点的权限。我的程序不需要太多的内存(可能在10兆字节左右),我也不需要做太多的IO(除了在找到某个文本文件时输出解决方案)。所以我的问题就变成了:对我来说,编写一个程序比启动多个线程来并行执行搜索更好吗?或者它与启动相同进程的实例一样,这样搜索空间在它们之间被均匀地划分(用不同的命令行参数指定)?

在我的例子中,空间可以独立搜索,所以我不需要线程/进程之间的任何共享内存。我只关心搜索效率。值得注意的是,这个程序可能需要运行几周或几个月。请原谅我的无知,我是有理论背景的。

考虑基础设施和维护方面的问题。哪个更有用——一个多线程应用程序,或者应用程序的多个实例。

如果有可能,你需要在不同的条件下以不同的方式启动,或者在不同的物理机器/分布式上,而不是多个应用程序将是一个解决方案,但这种方式你需要考虑日志,部署和其他维护问题。

一般来说,如果你想让它更简单,不如使用多线程的单实例化应用。

我会说,多进程。您根本不需要处理同步,也不会有连接线程。

最新更新