运行 来自 Python 中非协程函数的协程函数?
Running a coroutine function from a noncoroutine function in Python?
我正在使用 discord.py 与 discord 互动。
def hi():
await client.send_message(channel, message)
出现语法错误,除非我在 hi() 函数时写 "async"。
实在看不懂,求助!
您可以在事件循环中安排协程。您不能在非协同程序中调用它们或等待它们。
让我们检查以下代码:
import asyncio
async def greetLater(name, delay):
await asyncio.sleep(delay)
print("Hello {}!".format(name))
def main():
loop = asyncio.get_event_loop()
loop.run_until_complete(greetLater("masnun", 10))
if __name__ == '__main__':
main()
上面代码中,greetLater
是协程。我们不能直接从 main
函数中调用它。我们在这里需要做的是创建一个事件循环,然后在那里调度协程。我们使用 asyncio
模块来帮助我们创建事件循环和 运行 协程。
进一步参考:
http://masnun.com/2015/11/13/python-generators-coroutines-native-coroutines-and-async-await.html
http://masnun.com/2015/11/20/python-asyncio-future-task-and-the-event-loop.html
(免责声明:链接到我关于该主题的个人博客文章,您可以google获得更多参考)
我正在使用 discord.py 与 discord 互动。
def hi():
await client.send_message(channel, message)
出现语法错误,除非我在 hi() 函数时写 "async"。 实在看不懂,求助!
您可以在事件循环中安排协程。您不能在非协同程序中调用它们或等待它们。
让我们检查以下代码:
import asyncio
async def greetLater(name, delay):
await asyncio.sleep(delay)
print("Hello {}!".format(name))
def main():
loop = asyncio.get_event_loop()
loop.run_until_complete(greetLater("masnun", 10))
if __name__ == '__main__':
main()
上面代码中,greetLater
是协程。我们不能直接从 main
函数中调用它。我们在这里需要做的是创建一个事件循环,然后在那里调度协程。我们使用 asyncio
模块来帮助我们创建事件循环和 运行 协程。
进一步参考:
http://masnun.com/2015/11/13/python-generators-coroutines-native-coroutines-and-async-await.html
http://masnun.com/2015/11/20/python-asyncio-future-task-and-the-event-loop.html
(免责声明:链接到我关于该主题的个人博客文章,您可以google获得更多参考)