我是一个新手 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/