Я пытаюсь выяснить, как работает асинхронная функциональность в Python. Я смотрел бесчисленное количество видео, но, думаю, я не «понял». Мой код выглядит следующим образом:
def run_watchers():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(watcher_helper())
loop.close()
async def watcher_helper():
watchers = Watcher.objects.all()
for watcher in watchers:
print("Running watcher : " + str(watcher.pk))
await watcher_helper2(watcher)
async def watcher_helper2(watcher):
for i in range(1,1000000):
x = i * 1000 / 2000
Для меня имеет смысл иметь три функции. Один для запуска цикла, второй для перебора различных вариантов выполнения и третий для выполнения работы.
Я ожидаю следующий вывод:
Running watcher : 1
Running watcher : 2
...
...
Calculation done
Calculation done
...
...
однако я получаю:
Running watcher : 1
Calculation done
Running watcher : 2
Calculation done
...
...
, который, очевидно, показывает, что вычисления не выполняются параллельно. Есть идеи, что я делаю не так?