
Python
Откуда переменная инпат кью получает значения?

от функции get наверное
По поводу такого вопроса тебе нужно прочитать страниц этак 30 текста (главу книги или пару-тройку статей) чисто для ознакомления.. Для того, чтобы все понять, страниц 100-200-300 точно.. в зависимости от "степени готовности" к такому материалу)).
Это фрагмент классической задачи на "многопоточность" (multithreading).
Загугли "Задача о поставщике и потребителе"
Так вот потребитель (англ. consumer) в данном фрагменте извлекает из очереди (англ. queue - такой контейнер есть) очередное задание (англ. task), обрабатывает его и затем сообщает об окончании обработки (и готовности к следующему заданию) объекту синхронизации (семафор скорее всего).
В другом месте кода должен быть еще и поставщик, который в эту очередь кладет эти самые задания по сигналу семафора..
И по идее, они должны работать в разных нитях процесса и синхронизироваться этим самым семафором (он на очереди стоит).
В общем, загугли за подробностями..
Ах да.. про очередь.. Есть LIFO и FIFO - "основные принципы" устройства контейнеров. LIFO - последним вошел, первым вышел (last in, first out) - это стек, а FIFO - первым вошел, первым вышел (first in, first out) - это как раз таки и есть очередь.
Она имеет размер. Т. е. сколько максимум заданий могут ожидать обработки потребителем. При полном заполнении очереди, поставщик, в свою очередь, должен ждать пока в очереди освободится место, а при опустошении - потребитель ждать новых задач. Кстати, поставщиков и потребителей не обязательно по одному.
Так вот!
input_q - это и есть та самая очередь заданий. Input queue (в контексте потребителя эта очередь - входящая) имеется в виду под именем переменной. И у данного контейнера есть метод get(), который извлекает первый или "нижний" элемент очереди.
Это фрагмент классической задачи на "многопоточность" (multithreading).
Загугли "Задача о поставщике и потребителе"
Так вот потребитель (англ. consumer) в данном фрагменте извлекает из очереди (англ. queue - такой контейнер есть) очередное задание (англ. task), обрабатывает его и затем сообщает об окончании обработки (и готовности к следующему заданию) объекту синхронизации (семафор скорее всего).
В другом месте кода должен быть еще и поставщик, который в эту очередь кладет эти самые задания по сигналу семафора..
И по идее, они должны работать в разных нитях процесса и синхронизироваться этим самым семафором (он на очереди стоит).
В общем, загугли за подробностями..
Ах да.. про очередь.. Есть LIFO и FIFO - "основные принципы" устройства контейнеров. LIFO - последним вошел, первым вышел (last in, first out) - это стек, а FIFO - первым вошел, первым вышел (first in, first out) - это как раз таки и есть очередь.
Она имеет размер. Т. е. сколько максимум заданий могут ожидать обработки потребителем. При полном заполнении очереди, поставщик, в свою очередь, должен ждать пока в очереди освободится место, а при опустошении - потребитель ждать новых задач. Кстати, поставщиков и потребителей не обязательно по одному.
Так вот!
input_q - это и есть та самая очередь заданий. Input queue (в контексте потребителя эта очередь - входящая) имеется в виду под именем переменной. И у данного контейнера есть метод get(), который извлекает первый или "нижний" элемент очереди.
Это не важно. Важно то, что ты предполагаешь, что input_q умеет получать значения через get. И эта абстракция от реализации позволяет тебе работать с любыми объектами, которые умеют .get()
Это же функция - consumer(), которая принимает один аргумент - input_q. input_q получит значение, которое передать в функцию при ее вызове. Например:
consumer(255)
Теперь внутри функции input_q будет равен 255.
consumer(255)
Теперь внутри функции input_q будет равен 255.
Потому что метод .get() возвращает значение и изменяет экземпляр, видимо. А вообще, изначально, input_q получает значение как аргумент функции
Похожие вопросы
- Что такое переменные и типы данных в языке python
- Есть ли разница между словарём и переменными в python
- Как использовать переменную созданную в def во всей программе python
- Сколько значений может возвращать функция?
- Pyton Объединение словарей в питоне, если ключи второго равны значениям первого
- Вопрос программистам. Как вы обозначаете свои переменные в программах:
- Почему взяты переменные x,y, но операция производиться в a,b?
- Join / split in python. Как использовать? Как применять? Значения и функции, пж.
- Как в python получить элемент из списка по нескольким значениям
- Какие значения принимает s в balanced_parens(n-1). Как вообще работает этот код?
Все будет делаться на уровне корутин высокого уровня, в которых это все запрятано. Потому как питоны - слишком высокого уровня язык.
P.S.
Сам я питонов не знаю практически, потому только предполагаю.. Кто осведомлен, пусть поправит..