Как я могу одновременно "выбирать" на нескольких queue.Queue
?
Golang имеет желаемую функцию со своими каналами:
select {
case i1 = <-c1:
print("received ", i1, " from c1\n")
case c2 <- i2:
print("sent ", i2, " to c2\n")
case i3, ok := (<-c3): // same as: i3, ok := <-c3
if ok {
print("received ", i3, " from c3\n")
} else {
print("c3 is closed\n")
}
default:
print("no communication\n")
}
В то время как первый канал для разблокирования выполняет соответствующий блок. Как я могу достичь этого в Python?
Update0
Per ссылка, указанная в tux21b answer, нужный тип очереди следующие свойства:
- Многопрофильные/многопользовательские очереди (MPMC)
- предоставляет FIFO/LIFO для каждого производителя
- Когда очередь пуста/полные потребители/производители блокируются
Кроме того, каналы могут блокироваться, производители блокируются до тех пор, пока потребитель не получит элемент. Я не уверен, что Python Queue может это сделать.