Задать вопрос

Питон 3 и потоки?

начал учить питон 3 и на данный момент пытаюсь применять на практике потоки (обертка concurrent.futures)

выходит очень глючно и я даже знаю причину — от непонимания их устройства


на данный момент, удалось узнать два приема работы с потоками:

— использование threading.Event, чтобы в главном потоке ставить флаги, которые без проблем могут получать все потоки

— использование Queue — потоки кладут в очередь задания, а главный поток таймером чекает очередь и эти задания выполняет (после этого я отказался от сигналов и слотов pyqt, т.к. не вижу в них необходимости)


Но многое все же остается непонятным

— откуда лучше вызывать добавление в очередь задания «уменьшить счетчик активных потоков в GUI» — из process_result или воркера?

— надо ли дополнительно вызывать уменьшение счетчика, если поток например отменен или вылетел?

с этим дикая путаница — потоки то уходят в минус, то 60 штук просто зависает

— можно ли создать класс работы с конфигом (config.ini) в базовом классе главного потока и дать потокам возможность обращаться к нему и читать из него настройки?

— если это вызывает проблемы, то как же тогда передать всем файлам настройки — только в атрибутах запуска потока?


ну и все же хотелось бы попросить порекомендовать какую-нибудь литературу, которая смогла бы избавить меня от подобных вопросов

я хочу знать «что можно» и «что нельзя» делать в потоках.

желательно, литературу, ориентированную на питон


также, не откажусь от помощи знающих товарищей — если вы готовы наполнить мою голову ценными знаниями, я готов пополнить ваш счет вебмани :)
  • Вопрос задан
  • 2976 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
powerman
@powerman
Systems Architect, Senior Go/Perl Linux Developer
Прошу прощения, я не знаю «что можно» и «что нельзя» делать в потоках третьего питона, но раз за двое суток по теме никто не ответил, я отвечу немного не по теме.

Я бы порекомендовал вместо поисков «что можно» и «что нельзя» изучить «как надо» работать с потоками вообще. А потом, уже понимая что Вы хотите получить, изучать как именно нечто подобное можно сделать в третьем питоне. А «надо» с потоками работать в стиле CSP — это самый простой подход, превращающий многопоточное программирование из очень сложной, запутанной и глючной. К сожалению, он подразумевает использование действительно большого количества потоков, что невозможно если каждому потоку выделять довольно большой стек (что делают практически все реализации потоков в разных языках и ОС). Поэтому «пощупать» это можно, например, на языке Go, или на stackless питоне.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
29 янв. 2025, в 08:43
1500 руб./за проект
29 янв. 2025, в 08:35
500 руб./за проект
29 янв. 2025, в 08:01
8000 руб./за проект