Продолжение: многопроцессорная обработка или многопоточность для программного обеспечения моделирования Python - PullRequest
0 голосов
/ 10 апреля 2009

это продолжение до это . (Вам не нужно читать все ответы, только вопрос)

Люди объяснили мне разницу между процессами и потоками. С одной стороны, я хотел, чтобы процессы могли полностью использовать все ядро ​​ЦП, с другой стороны, передача информации между процессами была не идеальной, и я не хотел иметь две копии огромного объекта, с которым я имел дело. с.

Так что я думал о способе сделать это, комбинируя процессы и потоки; скажи мне, если это имеет смысл. Основным процессом в моей программе является процесс с графическим интерфейсом. У меня будет поток "менеджер рендеринга". Поток менеджера рендеринга будет отвечать за рендеринг симуляции, однако он не будет рендерить их сам по себе, а порождает другие процессы, выполняющие за него работу.

Это цели:

  1. Рендеринг должен использовать все доступные ядра.
  2. GUI никогда не должен становиться вялым.

Причина, по которой я хочу, чтобы менеджер рендеринга был потоком, заключается в том, что он должен делиться большим количеством информации с графическим интерфейсом: а именно, временной шкалой моделирования.

Так вы думаете, это хороший дизайн? У вас есть предложения по улучшению?

Обновление:

Извините за мое запутанное использование слова "рендер". Под рендерингом я имею в виду вычисление симуляции, а не рендеринг на экране.

Ответы [ 2 ]

2 голосов
/ 11 апреля 2009

Перед использованием процессов убедитесь, что:

  • Ваш алгоритм может быть распараллелен между всеми процессорами.
  • Вам нужен этот параллелизм.

На мой взгляд, хорошее эмпирическое правило:

  1. Заставь это работать.
  2. Сделай это правильно.
  3. Сделай это быстро.

Так что я бы предложил сначала «просто» использовать потоки. Может быть, вы поймете, что даже с одним потоком, вычисляющим симуляцию, это достаточно быстро.

0 голосов
/ 10 апреля 2009

Основным процессом в моей программе является процесс с графическим интерфейсом. У меня будет поток "менеджер рендеринга". Поток менеджера рендеринга будет отвечать за рендеринг симуляции, однако он не будет рендерить их сам по себе, а порождает другие процессы, выполняющие за него работу.

Я не специалист по графическим технологиям, но это очень похоже на то, для чего предназначены графические процессоры. Возможно pygame - это больше, чем вы ищете?

...