Если вас интересует только один из потоков, если он обновлен, вы должны посмотреть на asyncio.wait
.
async def main():
while True:
done, pending = await asyncio.wait([stream1, stream2], return_when=asyncio.FIRST_COMPLETED)
await do_something(done.result())
Если вы хотите работать с каждым из них, как они готово, проверьте asyncio.as_completed
.
async def main():
while True:
for f in asyncio.as_completed([stream1, stream2]):
await do_something(f.result())
Однако оба эти вопроса имеют проблему, заключающуюся в том, что в какой-то момент вы все еще будете ждать обновления всех потоков до того, как перезапуск любого из остальных. Если это то, что вам нужно, вы, вероятно, захотите запустить сопрограмму для каждого потока и использовать что-то вроде asyncio.Queue
, чтобы сообщить результаты обратно сопрограмме, которая передает результаты в do_something
.