Я пытаюсь отправить задания в пул один за другим (из-за ограничений памяти я не могу использовать карту). Возможно ли, чтобы пул переварил, есть ли у него рабочие и в противном случае ждать? , например. могу ли я сделать что-то вроде этого? p = Pool(n_workers) for item in list: p.work_on_this(item)
, где work_on_this
отправляет задание, если в пуле имеется больше рабочих, и в противном случае дождитесь его завершения.многопроцессорный питон можно отправить в пул задание последовательно
0
A
ответ
0
Способ решения проблемы заключается в использовании семафора, инициализированного количеством рабочих. Вы приобретаете и освобождаете семафор перед кормлением пула и после того, как работник выполнил задание.
Вот пример работы с Python 2.6 или выше.
from threading import Semaphore
from multiprocessing import Pool
def TaskManager:
def __init__(self, processes):
self.pool = Pool(processes=processes)
self.workers = Semaphore(processes)
def new_task(self):
"""Start a new task, block if all workers are busy."""
self.workers.acquire()
self.pool.apply_async(function, callback=self.task_done)
def task_done(self, results):
"""Called once task is done, releases the caller if blocked."""
self.workers.release()
Смежные вопросы
- 1. Распределенный многопроцессорный пул в Python
- 2. Многопроцессорный пул и очереди
- 3. Многопроцессорный пул Python
- 4. Многопроцессорный пул apply_async
- 5. Пул потоков, похожий на многопроцессорный пул?
- 6. Многопроцессорный пул внутри Время обработки процесса
- 7. python многопроцессорный пул с map_async
- 8. python многопроцессорный пул тайм-аут
- 9. Пул потоков работает последовательно?
- 10. Python многопроцессорный пул странное поведение в Windows
- 11. Многопроцессорный пул не работает в пользовательской функции
- 12. многопроцессорный питон: как разбить задания
- 13. Многопроцессорный пул хуже производительности на кусках
- 14. Как реализовать многопроцессорный пул с использованием Celery
- 15. Python 2.7 Многопроцессорный пул для списка строк?
- 16. python2.7 многопроцессорный пул async vs sync
- 17. Python многопроцессорный пул Pool.map является вызовом aquire?
- 18. PYTHON - почему многопроцессорный пул использует 100% процессора?
- 19. Многопроцессорный пул возвращает результаты как доступно
- 20. Python многопроцессорный пул зависает на сервере ubuntu
- 21. отправить задание по трубопроводу к qsub ПГЭ, используя питон подпроцесс
- 22. Многопроцессорный пул зависает, когда в любом из потоков есть исключение
- 23. Python - многопроцессорный пул Класс: может ли функция Thread содержать аргументы?
- 24. python многопроцессорный пул: обрабатывает новые копии основного приложения
- 25. Многопроцессорный пул 'apply_async' только кажется, вызывает функцию один раз
- 26. многопроцессорный пул -error Возвращающийся словарь из неуспешного get
- 27. Python - многопроцессорный пул с функциями с 2 массивами входов
- 28. многопроцессорный пул висит и не может выйти из приложения
- 29. Многопроцессорный питон. Объект Error '' dict 'не является вызываемым'
- 30. Можно ли назначить задание на задание?
Вы могли бы искать что-то подобное http://stackoverflow.com/questions/17909132/python-multiprocessing-set-spawning-process-to-wait. С этим я думаю, что можно построить некоторую логику. – pmaniyan
Вы не можете использовать 'map'? Установка 'chunksize = 1' будет отправлять задания один за другим. – tdelaney
Как насчет 'imap' вместо' map'? – tjollans