«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как разделить очередь результатов между несколькими процессами с помощью multiprocessing.Manager?

Как разделить очередь результатов между несколькими процессами с помощью multiprocessing.Manager?

Опубликовано 8 ноября 2024 г.
Просматривать:252

How to Share a Result Queue Between Multiple Processes Using multiprocessing.Manager?

Совместное использование очереди результатов несколькими процессами с использованием multiprocessing.Manager

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

Чтобы преодолеть ошибку «Объекты очереди должны делиться между процессами только посредством наследования», мы можем использовать multiprocessing.Manager. Этот класс менеджера позволяет создавать общие ресурсы, включая очереди, и управлять ими.

Включив создание очереди в контекст multiprocessing.Manager(), мы можем сделать его доступным для всех работников. Вот как можно изменить код:

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    m = multiprocessing.Manager()
    q = m.Queue()
    workers = pool.apply_async(worker, (33, q))

Теперь каждый работник может взаимодействовать с общим объектом q и сообщать результаты обратно базовому процессу. Этот подход обеспечивает эффективную и надежную передачу результатов, сохраняя при этом асинхронный характер apply_async.

Заявление о выпуске Эта статья перепечатана по адресу: 1729334537. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3