如何在python中实现asyncio.sleep()?

时间:2018-08-26 13:20:44

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

我是python3的新手,他希望了解该库如何实现asyncio.sleep()。

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

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

2 个答案:

答案 0 :(得分:6)

对于使用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中,并自动导入到{ {1}}),而asyncio魔术师会直接为您找到它。

答案 1 :(得分:1)

我不能说是否有更好的方法,但这是我的方法。

  1. 安装Pycharm(社区版是免费的)

  2. Create some project并配置Python解释器

  3. 编写使用您感兴趣的功能的简单代码:

import asyncio

asyncio.sleep()

    在代码中Ctrl+click上的
  1. sleep

  2. Pycharm将使用sleep函数的实现打开文件。

PS

我想其他现代IDE也有类似的方法来快速找到实现。