Не работает очередь в Redis
есть 2 файла - мойщик и сушильщик. однако при вызове в командной строке
py redis_washer.py &
Сначала полностью выполняется первая программа, и только потом я могу вызвать вторую
а нужно,чтобы они работали вместе мойщик помыл одну тарелку, сушильщик ее сразу высушил.
у меня получается так
C:\Users\User>py redis_washer.py &
Washer is starting
Washed salad
Washed bread
Washed soup
Washed oil chicken
Washer is done
C:\Users\User>py redis_dryer.py
Dryer is working
Dried salad
Dried bread
Dried soup
Dried oil chicken
dishes are dried
проблему так и не нашел
Ответы (1 шт):
Проблема никак не связана с redis или python. Тут дело в том, как вы запускаете программу. Вы используете unix способ запуска программы в фоне. В Windows cmd & не работает и чтобы запустить программу в фоне нужно делать так:
START /B py redis_washer.py
Только учтите, что если программа выводит в консоль, то этот текст будет смешан с приглашением, вашим вводом и выводом программ, которые вы запускаете далее.
Т.е. когда после запуска получаем в консоли C:\Users\User>Washer is starting, то это потому, что:
cmdзапустилpy redis_washer.pyв фоновом режиме- после этого
cmdнапечатал приглашение ввода новой командыC:\Users\User> - после этого (точнее это происходит параллельно, но по скорости не yспевает), программа делает свое первый вывод в консоль. И он выводится после приглашениея.
Если в этот момент ввести новую команду и нажать ENTER, то она выполнится, параллельно с уже запущенной. А вывод этих двух программ будет перемешан в консоли.
Попробуйте создать в том же каталоге файл demo.bat с содержимым:
START /B py redis_washer.py
START /B py redis_dryer.py
И потом запустить его из командной строки:
demo.bat
Это запустит обе команды параллельно.