Уведомления

Группа в Telegram: @pythonsu

#1 Июль 9, 2013 21:15:03

Py-Tonic
Зарегистрирован: 2013-07-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

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

Офлайн

#2 Июль 9, 2013 21:36:58

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

Py-Tonic
Вариант с проверкой условия во втором потоке бесконечным циклом я сразу отбросил
почему? со слипом нормально ведь

Офлайн

#3 Июль 9, 2013 21:44:08

Py-Tonic
Зарегистрирован: 2013-07-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

Про слип я думал, такой вариант в данном случаи вполне применим, но должен же наверное быть более красивый вариант.

Офлайн

#4 Июль 9, 2013 23:03:09

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

можно еще запускать каждый раз этот поток с блокировкой когда приходит сигнал и закрывать когда надо. Но там для них требуется какое-то время для старта и, емнип, достаточно большое чтобы отказаться от этого варианта. Да и вообще зависит от того какая там многопоточность и какая реализация питона.
Впрочем, я сам один раз только пользовался этой многопоточностью, причем в самом примитивном ее виде, так что не нужно особо полагаться на мое некомпетентное мнение

Офлайн

#5 Июль 10, 2013 01:21:57

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

Queue правильное решение.



Офлайн

#6 Июль 10, 2013 01:25:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

multiprocessing.Queue() - неблокирующая очередь
python.org. Queue



Отредактировано py.user.next (Июль 10, 2013 01:29:33)

Офлайн

#7 Июль 10, 2013 05:23:47

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

Queue красивый вариант



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Июль 10, 2013 11:17:11

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

Если событий, когда возникает нужное условие много, то, как уже советовали, очередь - так задания из очереди будут выполняться быстрее, их можно обрабатывать порциями по несколько (десятков, сотен) штук.
Если событие возникает редко, то Condition и вручную запускать его из принимающего данные потока.



Офлайн

#9 Июль 10, 2013 19:25:22

Py-Tonic
Зарегистрирован: 2013-07-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Блокирование потока до наступления условия

Да, пожалуй буду реализовывать через Queue, судя по докам это именно то, что мне было нужно. Спасибо всем за помощь!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version