Что я делаю не так?
await plt.savefig(filename, pad_inches=0, bbox_inches='tight')
Функция не становится асинхронной только потому, что перед ней используется await
.Вам необходимо объявить функцию как async def
, чтобы сделать ее асинхронной в первую очередь.
Любая функция, которая использует await
, должна быть определена как async def
до точки входа вашегопрограмма (например, async def main()
).Вам нужно запустить точку входа в цикле событий , чтобы заставить работать асинхронный код.
Обе функции plt.imshow
и plt.savefig
синхронизированы по своей природе.Вы можете попробовать привести вторую к асинхронности, используя run_in_executor и ожидая результата, но я не уверен, будет ли он работать.Я также не уверен, что вам это нужно: вы, вероятно, не достигнете ускорения при параллельном выполнении операций ввода-вывода.
Короче говоря, прочитайте этот ответ чтобы лучше понять, почему люди используют asyncio в первую очередь.Я также советую вам прочитать эту часть документации и начать с более тривиальной асинхронной задачи.