python - python中的asyncio.sleep()是如何实现的?

标签 python python-3.x asynchronous python-asyncio

我是一个新手 python3 爱好者,希望了解库是如何实现 asyncio.sleep() 的。

我有写协程的能力,但我似乎无法考虑如何开始编写异步 sleep 的代码。

如果您直接共享代码或提供有关如何在我的本地计算机上查找代码的快速教程,那就太好了。谢谢!

最佳答案

对于用 Python 实现的代码(相对于 C 扩展),如果您使用的是 ipython,查看源代码的一种简单方法是使用 ?? 运营商。例如,在我的 3.6 安装中:

In [1]: import asyncio

In [2]: asyncio.sleep??
Signature: asyncio.sleep(delay, result=None, *, loop=None)
Source:
@coroutine
def sleep(delay, result=None, *, loop=None):
    """Coroutine that completes after a given time (in seconds)."""
    if delay == 0:
        yield
        return result

    if loop is None:
        loop = events.get_event_loop()
    future = loop.create_future()
    h = future._loop.call_later(delay,
                                futures._set_result_unless_cancelled,
                                future, result)
    try:
        return (yield from future)
    finally:
        h.cancel()
File:      c:\program files\python36\lib\asyncio\tasks.py
Type:      function

你也可以只look at the CPython GitHub repo ,但根据代码组织,可能不太明显(例如,在这种情况下,代码实际上存在于 asyncio.tasks 中,并自动导入到 asyncio 中),而 ipython 魔法会直接为您找到它。

关于python - python中的asyncio.sleep()是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52026654/

相关文章:

python - ** 或 pow() 不支持的操作数类型 : 'method' and 'int'

python - 这两种基于生成器的协程是同一个概念吗?

python-3.x - ValueError : bad input shape (37533, 3) fit() 方法中的梯度 boost 错误

swift - 我可以用 Kitura 发送异步响应吗

python - 从存储的 .html 页面中提取新闻文章内容

python - python 中的无限 while 循环

python - 放心等同于 Python for Rest API 自动化测试

python - 如何形成对 Imgur 的 APIv3 的匿名请求

python - 如果执行在超时内完成则从函数返回,否则进行回调

c - 如果我在对句柄 h 的异步读取尚未完成之前调用 CloseHandle(h) 怎么办?