У меня есть простая функция python со следующим псевдокодом:
while True:
# 1 - CPU Intensive calculations(Synchronous)
# 2 - Take the result from the synchronous calculation and POST it to a server
while l oop работает вечно и выполняет вычисления с интенсивным использованием ЦП для первой половины l oop . Все это выполняется синхронно, и это нормально. Я бы хотел сэкономить время, сделав запрос POST асинхронным. В то время как l oop должен выполняться вечно, однако я бы хотел, чтобы запрос выполнялся асинхронно, чтобы l oop мог продолжить следующую итерацию, не дожидаясь разрешения запроса.
Будет хотел бы знать, как лучше всего достичь этого с помощью asyncio без использования каких-либо дополнительных потоков / гринлетов / процессов
Edit
Перед тем, как разместить здесь вопрос, я попробовал этот подход:
async def example_function():
# Synchronous CPU Intensive calculations
client = httpx.AsyncClient()
# Make a call to the REST API
await client.post()
async def main():
while True:
await asyncio.gather(example_function(), example_function())
if __name__ == "__main__":
asyncio.run(main())
Я совершенно не знаком с асинхронным программированием с python. Я попробовал метод сбора, однако недостаток моего подхода к реализации заключается в том, что вторая итерация example_function () не выполняет запрос POST асинхронно. Я понимаю, что asyncio.gather () в основном планирует задачу для каждой из переданных ему функций, и если одна из задач ожидает, она продолжает выполнение следующей. Однако мне нужно запускать example_function () в al oop навсегда, а не только n раз