当前位置: 首页 > 面试题库 >

Python 3.7-asyncio.sleep()和time.sleep()

萧树
2023-03-14
问题内容

当我转到asyncio页面时,第一个示例是hello world程序。当我在python上运行它时3.73,我看不出与正常的任何区别,
有人可以告诉我区别并举一个简单的例子吗?

In [1]: import asyncio
   ...:
   ...: async def main():
   ...:     print('Hello ...')
   ...:     await asyncio.sleep(5)
   ...:     print('... World!')
   ...:
   ...: # Python 3.7+
   ...: asyncio.run(main())
Hello ...
... World!

In [2]:

In [2]: import time
   ...:
   ...: def main():
   ...:     print('Hello ...')
   ...:     time.sleep(5)
   ...:     print('... World!')
   ...:
   ...: # Python 3.7+
   ...: main()
Hello ...
... World!

我故意将时间从1秒增加到5秒,希望看到一些特别的东西,但我没有。


问题答案:

您不会看到什么特别的东西,因为您的代码中没有太多异步工作。但是,主要区别在于它time.sleep(5)是阻塞的,并且asyncio.sleep(5)是非阻塞的。

time.sleep(5)被调用时,它会阻止脚本的整个执行,它会被搁置,只是冻结,无所事事。但是,当您调用时await asyncio.sleep(5),它将在等待语句完成执行时要求事件循环运行其他内容。

这是一个改进的示例。

import asyncio

async def hello():
    print('Hello ...')
    await asyncio.sleep(5)
    print('... World!')

async def main():
    await asyncio.gather(hello(), hello())

asyncio.run(main())

将输出:

~$ python3.7 async.py
Hello ...
Hello ...
... World!
... World!

您可以看到这await asyncio.sleep(5)并没有阻止脚本的执行。

希望能帮助到你 :)



 类似资料:
  • 本文向大家介绍给ubuntu18安装python3.7的详细教程,包括了给ubuntu18安装python3.7的详细教程的使用技巧和注意事项,需要的朋友参考一下 参考文章 ubuntu源码安装python3 linux 编译安装python3.6的教程详解 准备工作 安装工具 正式开始 下载python文件 解压源码包 创建python安装路径 安装python 添加环境变量 在结尾添加 添加用

  • 今天,我用brew upgrade命令升级了python3.7。 我尝试使用安装PyYAML包。 我有这个错误,不知道。。 最后 我试图解决这个问题,但仍然不知道。 https://github.com/yaml/pyyaml/issues/126 如何安装Python的yaml包 我如何解决这个问题...?

  • 本文向大家介绍python3.7简单的爬虫实例详解,包括了python3.7简单的爬虫实例详解的使用技巧和注意事项,需要的朋友参考一下 python3.7简单的爬虫,具体代码如下所示: 总结 以上所述是小编给大家介绍的python3.7简单的爬虫实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持! 如果你觉得本文对你有帮助,欢迎

  • 编辑18/02:因为我仍然没有解决方案,我正在更新我目前所知道的。 我已经成功安装了python 3.7。我可以使用pip(或pip3)安装模块,但这些模块是在Python3.6(ubuntu附带)中安装的。因此,我无法在Python3.7中导入这些模块(找不到模块)。Python3.7无法识别pip/pip3,因此我无法通过pip/pip3进行安装。我需要Python3.7 -- 我已经在我的U

  • 本文向大家介绍Python3.7基于hashlib和Crypto实现加签验签功能(实例代码),包括了Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)的使用技巧和注意事项,需要的朋友参考一下 环境: Python3.7 依赖库: 加签: 验签: 总结 以上所述是小编给大家介绍的Python3.7基于hashlib和Crypto实现加签验签功能,希望对大家有所帮助,如果大

  • 我对编程非常陌生,目前正在Youtube上学习python(“新的Boston-Python3”)试图根据视频中的代码从互联网上下载图像,但出现了一个错误。代码如下: 错误是: 我正在使用PyCharm 2018.3版本 请帮帮我,谢谢