Найти - Пользователи
Полная версия: Блокирование потока до наступления условия
Начало » Python для экспертов » Блокирование потока до наступления условия
1
Py-Tonic
У меня в приложении есть два потока. Один принимает данные, а во втором должна вызываться функция, которая будет блокировать поток до получения первым потоком данных. Проблема в том, что я не знаю, как это реализовать, т.к. раньше старался избегать потоков по возможности. Вариант с проверкой условия во втором потоке бесконечным циклом я сразу отбросил.
sergeek
Py-Tonic
Вариант с проверкой условия во втором потоке бесконечным циклом я сразу отбросил
почему? со слипом нормально ведь
Py-Tonic
Про слип я думал, такой вариант в данном случаи вполне применим, но должен же наверное быть более красивый вариант.
sergeek
можно еще запускать каждый раз этот поток с блокировкой когда приходит сигнал и закрывать когда надо. Но там для них требуется какое-то время для старта и, емнип, достаточно большое чтобы отказаться от этого варианта. Да и вообще зависит от того какая там многопоточность и какая реализация питона.
Впрочем, я сам один раз только пользовался этой многопоточностью, причем в самом примитивном ее виде, так что не нужно особо полагаться на мое некомпетентное мнение
sp3
Queue правильное решение.
py.user.next
multiprocessing.Queue() - неблокирующая очередь
python.org. Queue
JOHN_16
Queue красивый вариант
Lexander
Если событий, когда возникает нужное условие много, то, как уже советовали, очередь - так задания из очереди будут выполняться быстрее, их можно обрабатывать порциями по несколько (десятков, сотен) штук.
Если событие возникает редко, то Condition и вручную запускать его из принимающего данные потока.
Py-Tonic
Да, пожалуй буду реализовывать через Queue, судя по докам это именно то, что мне было нужно. Спасибо всем за помощь!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB