后续:Python仿真软件的多处理或多线程

时间:2009-04-10 14:41:10

标签: python multithreading multicore simulation multiprocessing

这是this的后续行动。 (您不必阅读所有答案,只需要阅读问题)

人们向我解释了进程和线程之间的区别。一方面,我想要进程,所以我可以充分利用CPU的所有核心,另一方面,在进程之间传递信息不太理想,我不想拥有我正在处理的巨大对象的两个副本用。

所以我一直在考虑一种方法,将流程和线程结合起来;告诉我这是否有意义。我的程序中的主要过程是GUI过程。我会让它产生一个“渲染管理器”线程。渲染管理器线程将负责渲染模拟,但是,它不会自己渲染它们,而是产生其他进程来为它完成工作。

这些是目标:

  1. 渲染应该利用所有可用的核心。
  2. GUI永远不会变得迟钝。
  3. 我希望渲染管理器成为一个线程的原因是因为它必须与GUI共享大量信息:即模拟时间线。

    那么你认为这是一个好的设计吗?你有任何改进建议吗?

    更新

    很抱歉我混淆地使用了“render”这个词。通过渲染,我的意思是计算模拟,而不是在屏幕上渲染。

2 个答案:

答案 0 :(得分:2)

在使用流程之前,请确保:

  • 您的算法可以在所有处理器之间并行化。
  • 你需要这种并行性。

在我看来,一个好的经验法则是:

  1. 让它发挥作用。
  2. 做对。
  3. 快点。
  4. 所以我建议先“简单地”使用线程。也许你会意识到即使有一个线程计算模拟它也足够快。

答案 1 :(得分:0)

  

我的程序中的主要过程是GUI过程。我会让它产生一个“渲染管理器”线程。渲染管理器线程将负责渲染模拟,但是,它不会自己渲染它们,而是产生其他进程来为它完成工作。

我不是图形技术的专家,但这听起来很像GPU的用途。也许pygame更像是你在寻找什么?