与同步调用结合使用时,等待语句的顺序在Python中是否重要?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了与同步调用结合使用时,等待语句的顺序在Python中是否重要?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1286字,纯文字阅读大概需要2分钟。
内容图文
![与同步调用结合使用时,等待语句的顺序在Python中是否重要?](/upload/InfoBanner/zyjiaocheng/812/28923ae994f742e688253565da20014f.jpg)
将等待的操作移动到方法的顶部以便能够在等待时进行工作是否有意义?
例
按逻辑顺序
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时,密码将被哈希处理,因此我们将使用“停机时间”来做一些有用的事情.
那么我是否应该尽可能地尽可能晚地提出不可饶恕的陈述,以便在等待期待的陈述时执行它们?
解决方法:
… while the db_handle is awaited the password would be hashed, so we would use the “down time” to do something useful.
我不认为这是正确的. await的作用是阻止下一行执行,直到返回db_handle.它使调用代码的行为类似于同步代码,因此正常的排序注意事项适用.
如果你想在获得句柄的同时做一些工作,你可以使用Task.
async def set_new_password(user_id, new_password):
task = asyncio.create_task(get_db_handle())
hash = bcrypt(new_password)
db_handle = await task
await async_write_password(db_handle, user_id, hash)
内容总结
以上是互联网集市为您收集整理的与同步调用结合使用时,等待语句的顺序在Python中是否重要?全部内容,希望文章能够帮你解决与同步调用结合使用时,等待语句的顺序在Python中是否重要?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。