Имеет ли смысл перемещать операции, которые можно ожидать, в начало метода, чтобы иметь возможность выполнять работу, пока они ожидаются?
Пример
в логическом порядке
async def set_new_password(user_id, new_password):
hash = bcrypt(new_password)
db_handle = await async_get_db_handle()
await async_write_password(db_handle, user_id, hash)
Здесь Afaiu Python вычислит хеш, затем создаст сопрограмму для дескриптора db, затем сопрограмму для операции записи и затем передаст управление циклу событий, который будет планировать обе операции.
В этом случае, предполагая, что это наш единственный вызов метода, мы «потратили» время на хеширование пароля, и следующее будет быстрее:
синхронно как можно позже
async def set_new_password(user_id, new_password):
db_handle = await async_get_db_handle()
hash = bcrypt(new_password)
await async_write_password(dh_handle, user_id, hash)
Здесьпока ожидается db_handle, пароль будет хэширован, поэтому мы будем использовать «время простоя», чтобы сделать что-то полезное.
Поэтому я должен стремиться всегда ставить не ожидаемые операторы как можно позже, поэтомучто они могут быть выполнены, пока ожидаются ожидаемые операторы?