У меня есть 3 функции, которые мне нужно запустить. Каждая функция генерирует определенный вывод, от которого зависит следующая функция. В общем, как только первый завершается только тогда, я могу перейти ко второму, но как только второй запустится, я могу снова запустить первый, чтобы сгенерировать следующий пакет данных - поэтому я хочу запустить их оба на в то же время, но я не могу запустить второй, прежде чем я закончу первый, и третий, прежде чем я закончу второй. Но я могу запустить первое и второе, пока работает третье. Как я могу реализовать это с помощью потоков в Python? Я понимаю основы многопоточности, но не знаю, как создать для этого очередь.
Это пример того, что мне нужно сделать:
# This is what will usually happen without threading. How can I implement the
# same thing but with threading? Keep in mind that foo() 1, 2 and 3
# take some amount of time. And foo2() may finish before foo() finished
# generating data, so I can't run foo2() until I have the data from foo()
# foo generates the data for foo2
data = foo()
# foo2 generates data for foo3
data2 = foo2(data)
# foo3 does something with data2 and the data is no longer used
foo3(data2)