Необходимо реализовать функцию pipeline
, которая является аналогом unix-pipeline. Пример:
$ grep 127.0.0.1 | awk '{print $2}' | sort | uniq -c | sort -nr
То есть, когда stdout
одной команды передается как stdin
другой команде. Но в нашем случае в качестве stdin
/stdout
будут выступать очереди (объекты queue.Queue
), а в качестве команд запущенные потоки (threading.Thread
).
Функция pipeline
принимает список работ job
. job
- это функция, которая имеет сигнатуру
from queue import Queue
def job(input_queue: Queue, output_queue: Queue) -> None:
pass
Необходимо каждый job
запустить в отдельном потоке. Затем, через первый job
"запустить"
какое-нибудь значение, например число 5. Второй job
может, например, возводить данное число
в квадрат и полученный результат передавать в третий job
. Третий job
будет, например, вычитать
единицу и передавать результат в четвертый job
и т.д. То есть, на выходе должен получиться
некий "конвейер".
Кроме функции pipeline
необходимо реализовать несколько любых произвольных функций job
, которые
будут делать некоторую работу и передавать результат дальше. Код необходимо написать в файле pipeline.py
.