Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 2, 2012 14:20:13

marfusha
От:
Зарегистрирован: 2011-10-07
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Несколько камер одновременно.Потоки

Доброго времени суток!

Есть задача “общаться” с несколькими IPкамерами одновременно.
Что-то вроде охранной системы. Пробую реализовать при помощи потоков(threading). Есть поток для работы с камерой(запускается n раз - сколько камер), поток для передачи в БД и поток для передачи файлов на сервер(FTP) + основной(инициализация глобальных переменных и запуск потоков).
Подскажите, как реализовать корректную работу программы?Как можно синхронизировать потоки,чтоб они давали друг другу работать? Т.к. если запускать “в лоб”, получается полная дребедень. Могут ли помочь задержки time.sleep()? Можно ли программно передавать/забирать управление потокам?
Что делать, если один из потоков зависает?

Дурацкий вопрос: GIL работает всегда, или его включать нужно?

Прошу прощения, в потоках разбираюсь плохо. Знаю только, что в один момент работает только 1 поток и что GIL переключает потоки через каждые 100 инструкций(и учитывая приоритеты, управление может передаваться одному и тому же потоку)

Надеюсь, смогла выразить мысль…
Заранее спасибо.

Python 2.6+WinXP+OpenCv



Отредактировано marfusha (Апрель 2, 2012 14:46:38)

Офлайн

#2 Апрель 2, 2012 16:41:31

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Несколько камер одновременно.Потоки

Не стоит беспокоиться о GIL, о том что потоки не будут давать друг другу работать, о том чтобы у кого-то забирать управление и куда-то отдавать. Питон справится с этим сам. Создайте поток (или потоки), который будет опрашивать камеры. Результаты пусть складываются в очередь (класс Queue). Поток общающийся с базой будет читать результаты из очереди и отправлять в базу. Если получается “дребедень”, постите код и показывайте ошибки.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version