2009-04-10 71 views
0

這是一個跟進this。 (您不必閱讀所有的答案,只是這個問題)跟帖者:多或者多線程Python的仿真軟件

人向我解釋進程和線程之間的區別。一方面,我希望進程能夠充分利用CPU的所有核心,另一方面,在進程之間傳遞信息並不理想,而且我不想擁有兩個我正在處理的巨大對象的副本用。

所以我一直在想一個辦法做到這一點,結合進程和線程;告訴我這是否合理。我的程序中的主要過程是GUI過程。我會讓它產生一個「渲染管理器」線程。渲染管理器線程將負責渲染模擬,但是,它不會自己渲染它們,但會產生其他進程來完成它的工作。

這些目標:

  1. 渲染應採取一切可用的核心優勢。
  2. 的GUI不應該變得遲緩。

我想讓渲染管理器成爲線程的原因是因爲它必須與GUI共享大量信息:即模擬時間線。

那麼你認爲這是一個好的設計?你有什麼改進建議嗎?

更新:

對不起,我的混亂使用單詞 「渲染」 的。通過渲染我的意思是計算模擬,而不是渲染在屏幕上。

+0

重複:http://stackoverflow.com/questions/731993/multiprocessing-or-multithreading – 2009-04-10 14:45:40

+0

這個問題有什麼不同?這是你以前的問題。 – 2009-04-10 14:46:17

+0

這裏我提出了一個結合了線程和進程的特定設計,我想知道它是否好。我已經多次閱讀了上一個問題的所有答案。 – 2009-04-10 15:04:13

回答

0

我在程序的主要過程是GUI程序中。我會讓它產生一個「渲染管理器」線程。渲染管理器線程將負責渲染模擬,但是,它不會自己渲染它們,但會產生其他進程來完成它的工作。

我不是圖形技術的專家,但這聽起來很像GPU的目標。或許pygame更適合您?

2

使用過程之前,請確保:

  • 你的算法可以在所有處理器之間進行並行化。
  • 您需要這種並行性。

在我看來一個很好的經驗法則是:

  1. ,使其工作。
  2. 說得對。
  3. 快點。

所以我建議「簡單地」先使用線程。也許你會意識到,即使用一個線程計算模擬速度也足夠快。

相關問題