Python 中的 Asyncio.sleep() 是如何实现的?



我是一个新手python3爱好者,他希望了解asyncio.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 filespython36libasynciotasks.py
Type:      function

你也可以只查看CPython GitHub存储库,但根据代码组织的不同,在哪里查找可能并不明显(例如,在这种情况下,代码实际上存在于asyncio.tasks中,并自动导入到asyncio中(,而ipython魔术直接为您找到它。

最新更新