Шаг 17.
Библиотека PyQt5. Знакомство с PyQt5. Многопоточные приложения. Модуль queue: создание очереди заданий

    На этом шаге мы перечислим классы, используемые для создания очереди, и их основные методы.

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

    Модуль queue, входящий в состав стандартной библиотеки Python, позволяет решить эту проблему. Модуль содержит несколько классов, которые реализуют разного рода потоко-безопасные очереди. Перечислим эти классы:

    Параметр maxsize во всех трех случаях задает максимальное количество элементов, которое может содержать очередь. Если параметр равен нулю (значение по умолчанию) или отрицательному значению, то размер очереди не ограничен.

    Экземпляры этих классов поддерживают следующие методы;

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг