Форум сайта python.su
Есть функция, которая в отдельном потоке качает файлы, хочу сделать progressbar. В связи с этим встал вопрос как уведомить программу о том, что очередной файл скачался.
В pyqt можно было-бы использовать сигналы, а как решить эту задачу используя стандартную библиотеку не знаю. В какую сторону курить?
P.S предполагаю, что это можно решить с помощью callback функции, но не уверен, что это тут уместно и нормальная это практика или нет?
Отредактировано mitya_s_v (Янв. 4, 2015 12:47:10)
Офлайн
mitya_s_v
может быть посмотреть на модуль signal ?
Офлайн
Не знал о таком, сейчас гляну. Кстати, вообще по логике ещё для этого может подойти стандартный механизм исключений.
Хотелось бы узнать, можно его использовать для моих целей. Я где-то вроде читал, что это приемлемая практика.
Офлайн
JOHN_16
А кроме модуля signal как ещё можно обмениваться данными между потоками?
Офлайн
mitya_s_vНеблокирующая очередь queue.Queue()
как ещё можно обмениваться данными между потоками?
Офлайн
py.user.nextДа это самый широко освещённый способ. Мне его применять не особо хочется. Нужно будет проверять по таймеру эту очередь и т д
Неблокирующая очередь queue.Queue()
Офлайн
mitya_s_v
Какие варианты есть кроме объекта в глобальной области видимости (имею ввиду queue.Queue())?
Офлайн
Alen
Ну а варианты кроме процессов и потоков – любая асинхронная библиотека, например gevent.
Офлайн
4kpt_IIIДумаю это не для моего случая. Это слишком огромные проекты, чтобы с помощью их просто скачать несколько файлов.
Я больше использую tornado. Когда-то пробовал твистед
4kpt_IIIА в asyncio есть нужные мне инструменты?
P.S. Жаль, что asyncio только на 3.4 и выше…
Офлайн
mitya_s_v
А в asyncio есть нужные мне инструменты?
Офлайн