CPU/内存密集型任务的最佳Python设置

3 投票
2 回答
905 浏览
提问于 2025-04-15 18:55

我正在做一个模拟实验,这个实验会生成成千上万的结果对象。每个对象的大小大约是1MB,而且所有的结果对象都需要保存在内存中,以便可以随时查询,生成各种临时报告。生成一个结果对象大约需要1到2秒。

所以,即使我充分利用了我的四核CPU并进行并行处理,完成一次模拟也需要超过5分钟。而且,处理这个任务需要4到5GB的内存。问题是,我想同时运行更多的模拟实验,以便更快地完成。

目前,我是在Windows Vista 64位系统上使用C#和IronPython来完成这个工作,电脑是四核CPU,8GB内存。我打算买一台新电脑,配置24GB内存和更好的CPU,最终可能会购买一台多CPU和更多内存的工作站。

所以我想问,如何才能最好地利用新硬件呢?我考虑了以下几种组合。

  1. 在64位Windows上使用IronPython和C#
  2. 在64位Linux上使用IronPython和C#(Mono)
  3. 在64位Windows上使用Jython和Java
  4. 在64位Linux上使用Jython和Java

我的模拟引擎是用C#或Java写的,而我用Python来生成报告。你们觉得哪种组合最好呢?

在处理内存消耗大的任务时,.NET和Java平台之间没有太大区别吗?Windows和Linux之间也没有区别吗?

我有时在我的Ubuntu笔记本(32位,2GB内存)上运行当前的C#和IronPython代码,感觉比在同样配置的Windows .NET环境下要稳定得多。但我不知道如果底层硬件更好时会怎样。

我欢迎任何建议,不论是关于上述选择的。

2 个回答

2

@Dave说得对,如果你真的在意的话,可以对每种组合进行性能测试,看看效果如何。

我个人建议你还是使用自己最熟悉的工具,比如Windows、Java、Linux、.Net或者它们的任意组合。因为在维护和开发软件时,你的工作效率通常比换操作系统或虚拟机带来的小幅性能提升更重要。

2

因为你可以免费安装这些东西,而且听起来你已经在 .Net 和 Java 上实现了代码,所以我建议你在四个平台上进行性能测试(Windows/Linux * Java/.Net)。

听起来所有的主要工作都是在 Java/C# 中完成的,所以我觉得 Jython 和 IronPython 之间的性能差异可能并不重要。

撰写回答