Как добавить дополнительные задачи в работающий многопроцессорный пул на основе результатов работы?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить дополнительные задачи в работающий многопроцессорный пул на основе результатов работы?

Сообщение Anonymous »

Предположим, у меня есть набор из 20 задач, нагруженных процессором (~ 1 час каждая, но некоторые занимают намного больше времени), которые выполняются путем вызова функции, например. Pool.apply_async(function, Task_list) и т. д. ПК имеет 12 ядер. Таким образом, я могу распределить нагрузку и использовать все 12 ядер.

Результат каждой задачи может потребовать запуска новой задачи (некоторым задачам может потребоваться 1 новая задача). другие, возможно, 10).

Когда требуется новая задача, я хотел бы создать эту задачу в существующем пуле Task_list, чтобы полностью оптимизировать ЦП использование в любое время.

В настоящее время я запускаю 20 задач, жду завершения, запускаю новые ~18 задач, жду завершения, запускаю оставшиеся новые задачи, .. .. при этом бывает, что в течение часа используется всего 1 ядро, а не 12. Это приводит к потере времени вычислений от нескольких часов до суток. Я мог бы запустить обновленную задачу в том же воркере, однако это приведет к еще большей потере)

С пулом кажется невозможным добавлять в пул больше задач, пока оно запущено. Это правильно, или есть какие-то умные способы сделать это, которые я пропустил при поиске повсюду?

(Единственный вариант, который я вижу, — это использовать процесс вместо пула и сделайте цикл while для динамического списка, который запускает типичную задачу как один процесс, при этом позволяя одновременно выполнять только до 12 процессов, и для каждой задачи или новой задачи, поместите их в динамический список и удалите задачу при ее отправке в процесс.)

Подробнее здесь: https://stackoverflow.com/questions/543 ... ker-result
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как добавить дополнительные задачи в работающий многопроцессорный пул на основе результатов работы?
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Многопроцессорный пул Python с объектами классов
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Многопроцессорный пул Python не запускает несколько процессов
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Многопроцессорный пул перестает работать — Windows 11
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Многопроцессорный пул перестает работать — Windows 11
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»